如果我在 make 文件中有这一行:\
libpqxx_Libs = -L/share/home/cb -lpqxx-2.6.9 -lpq
这是否表明编译器使用 lpqxx-2.6.9.so 共享对象文件,或者这是否表明编译器使用文件夹 lpqxx-2.6.9 中的所有 .so?或者这完全是别的什么?
谢谢您的帮助!
如果我在 make 文件中有这一行:\
libpqxx_Libs = -L/share/home/cb -lpqxx-2.6.9 -lpq
这是否表明编译器使用 lpqxx-2.6.9.so 共享对象文件,或者这是否表明编译器使用文件夹 lpqxx-2.6.9 中的所有 .so?或者这完全是别的什么?
谢谢您的帮助!
-L
在这种情况下是链接器的一个参数,它将指定的目录添加到链接器将搜索必要库的目录列表中,例如您使用指定的库-l
。
它不是一个 makefile 命令,尽管它通常出现在 C 项目的 makefile 中。
-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'.