2010-06-09 45 views
3

我已经知道我应该使用-l选项来使用GCC来喜欢对象。 即gcc -o test test.c -L./ -lmy使用GCC链接对象的两种方法?

但是我发现“gcc -o test2 test.c libmy.so”也在工作。

当我使用readelf这两个可执行文件时,我找不到任何区别。 那么为什么人们使用-l选项来链接对象呢?它有什么优势吗?

回答

4

因为您的库目录中可能具有静态或共享的库版本, G。 libmy.alibmy.so,或它们两者。这与系统库更相关:如果链接到本地​​构建树中的库,则知道您构建的是哪个版本(静态或共享),但您可能不知道其他系统的配置和库混合。

除此之外,some platforms may have different suffixes。所以最好以规范的方式指定它。

0

主要原因是,-lname将在库搜索列表中搜索libname.a(或libname.so等)。您可以使用-L选项将目录添加到库搜索列表中。这是编译器驱动程序内置的一种便利,可以更轻松地查找已安装在系统标准位置的库。