c++ - ld 两台计算机之间的不同行为

标签 c++ linux

我正在尝试使用 ld 的选项 -l:/path/to/library 编译一个程序,但是在一台计算机上 ld设法找到图书馆,但在另一个图书馆找不到。

我发现问题是在第二台计算机中,ld 将路径添加到给定计算机的开头,但我不明白为什么这样做。

有没有人能解决这个问题?

最佳答案

-l仅用于指定库的名称。例如。如果你写 -lfoo , gcc 寻找 libfoo: 首先是动态版本,即 libfoo.so , 如果没有找到它,那么对于静态的,即 libfoo.a . 不是包含路径。

但是 gcc 在哪里会寻找我的 libfoo.so,你会问吗? 它使用一些标准路径,这些路径在您的两台 PC 上可能不同,因此它可以在一台上运行而在另一台上不起作用。要建议更多库搜索路径,请使用参数 -L .它可以出现多次。

示例:gcc ... -lfoo -lbar -L/my/path/to/libraries1 -L/my/second/library/path寻找 libfoo.solibbar.so (可能还有 libfoo.alibbar.a )在标准搜索目录以及自定义目录中 /my/path/to/libraries1/my/second/library/path .

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

相关文章:

C++11 正则表达式多行 : Why does the group ([^\\0]+\n)? some_text 在 match[1] 中包含所有内容?

c++ - 同时遍历两个 std::lists

python - Pecl/Python : unsupported locale setting - Ubuntu 13. 10

Python tkinter 无法在 crontab 上工作

linux - 使用终端在 ubuntu 上配置 postgresql

Lifebook P1610 Touch 上的 Linux

c++ - 我想摆脱动态类型转换。最好的选择是什么?

c++ - 如何用 const 成员和继承来避免代码重复和浪费内存?

c++ - 使用 push_back 函数调用复制构造函数的 vector 内存分配调用

linux - 补丁:以非交互模式运行