如果我在make文件中有这一行:\
libpqxx_Libs = -L/share/home/cb -lpqxx-2.6.9 -lpq
这是否表明编译器使用lpqxx-2.6.9.so共享对象文件,或者是否指示编译器使用foler lpqxx-2.6.9中的所有.so?或者这完全是别的什么?
感谢您的帮助!
答案 0 :(得分:1)
-L
是链接器的参数,它将指定的目录添加到链接器将搜索所需的库的目录列表中,例如您使用-l
指定的库。
它不是一个makefile命令,即使它通常出现在C项目的makefile中。
答案 1 :(得分:1)
-L
实际上不是makefile
命令(正如您在问题标题中所述)。
这一行实际发生的是将一个值赋值给变量libpqxx_Libs
- 仅此而已。您必须通过makefile
或$(libpqxx_Libs)
在${libpqxx_Libs}
中搜索该变量的位置。这很可能是链接命令中的参数,或者是包含链接的编译命令。
在这种情况下,-L
和-l
的含义可以在例如gcc man pages中找到,其中说明了
-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'.