Makefile -L命令

时间:2012-08-02 21:37:11

标签: makefile shared-libraries

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

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

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

感谢您的帮助!

2 个答案:

答案 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'.