写作之间有什么区别
g++ test.cc -L/my/dir/ -lname
和
g++ test.cc /my/dir/libname.so
吗?
都正确吗?
我能想到的事情
答案 0 :(得分:0)
不同之处在于
g++ test.cc -L/my/dir/ -lname
即使/my/dir/libname.so
不存在也可能成功:
libname.so
,/lib
)中找到/usr/lib
。libname.a
,并进行静态链接。此外,它允许您从同一目录链接到多个库,而无需重复父目录。
答案 1 :(得分:0)
第一种方法在链接时查找/ my / dir目录中的库文件。但是,仅将简短的库名libname.so
(或根据操作系统找到的任何库名)写入映像。程序启动时,它将在某个库路径(即Linux中的LD_LIBRARY_PATH)中查找该库。现在,您可以将可执行文件和库重新放置在不同的新位置,并在重新放置后设置正确的搜索路径。
第二种方法将库的完整路径写入映像:/my/dir/libname.so
。程序启动时,它将寻找该特定路径来获取库。除非新环境中存在相同的库路径,否则这使得映像不可重定位。效果类似于“ -rpath”方法。