2012-08-02 198 views
0

如果我有這條線在make文件:\的Makefile -L命令

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

這是否表明編譯器使用lpqxx-2.6.9.so共享對象文件或執行此indciate編譯器使用foler lpqxx-2.6.9中的所有.so?或者這是另一回事?

感謝您的幫助!

回答

1

在這種情況下-L一種說法到連接,,增加了指定目錄下的目錄列表鏈接器將搜索必要的庫,例如您使用-l指定的庫。

這不是一個makefile命令,即使它通常出現在C項目的makefile中。

1

-L實際上並不是makefile命令(正如您在問題的標題中所述)。

實際發生在這條線上的是賦值給變量libpqxx_Libs - 沒有什麼更多也沒有。您必須通過$(libpqxx_Libs)${libpqxx_Libs}在您的makefile中搜索使用該變量的位置。這很可能是鏈接命令或包含鏈接的編譯命令中的一個參數。

在這方面,的-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'.