0

如果我在 make 文件中有这一行:\

libpqxx_Libs = -L/share/home/cb -lpqxx-2.6.9 -lpq

这是否表明编译器使用 lpqxx-2.6.9.so 共享对象文件,或者这是否表明编译器使用文件夹 lpqxx-2.6.9 中的所有 .so?或者这完全是别的什么?

谢谢您的帮助!

4

2 回答 2

1

-L在这种情况下是链接器的一个参数它将指定的目录添加到链接器将搜索必要库的目录列表中,例如您使用指定的库-l

它不是一个 makefile 命令,尽管它通常出现在 C 项目的 makefile 中。

于 2012-08-02T21:43:26.043 回答
1

-L实际上不是makefile命令(正如您在问题标题中所述)。

在这一行中实际发生的是对变量的赋值libpqxx_Libs——不多也不少。您必须通过或搜索makefile使用该变量的位置。这很可能作为链接命令或包含链接的编译命令中的参数。$(libpqxx_Libs)${libpqxx_Libs}

-L在这种情况下,和的含义-l可以在例如gcc 手册页中找到,其中指出

-llibrary
   Use the library named library when linking.

   The linker searches a standard list of directories  for  the  li-
   brary, which is actually a file named `liblibrary.a'.  The linker
   then uses this file as if it  had  been  specified  precisely  by
   name.

   The directories searched include several standard  system  direc-
   tories plus any that you specify with `-L'. 
于 2012-08-03T02:55:46.183 回答