我试图编译一个带有-l:/path/to/library选项的程序,但在一台计算机上设法找到库,而在另一台计算机上却找不到。
我发现问题在于,在第二台计算机中,ld将路径添加到给定计算机的开头,但我不明白它为什么这样做。
有人能解决这个问题吗?

最佳答案

-l仅用于指定库的名称。例如,如果您编写-lfoo,gcc将查找libfoo:首先是动态版本,即libfoo.so,如果找不到,则是静态版本,即libfoo.a
它不是用来包含路径的。
但是海合会在哪里找我的libfoo呢?
它使用一些标准路径,这可能在您的两台电脑上有所不同,因此它在一台电脑上工作,而在另一台电脑上不工作。要建议更多库搜索路径,请使用参数-L。它可以出现多次。
示例:gcc ... -lfoo -lbar -L/my/path/to/libraries1 -L/my/second/library/path在标准搜索目录以及自定义目录中查找libfoo.solibbar.so(可能还有libfoo.alibbar.a)。

关于c++ - 两台计算机之间的行为不同,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38049929/

10-11 12:21