【问题标题】:Adding .o files path to ld default (crtbeginS.o, not .so files)将 .o 文件路径添加到 ld 默认值(crtbeginS.o,而不是 .so 文件)
【发布时间】:2015-08-03 19:54:11
【问题描述】:

当使用 GCC 编译大多数东西时,我得到这个错误:

/..//bin/ld: cannot find crtbeginS.o: No such file or directory

crtbeginS.o 存在于 /usr/local/lib/gcc/x86_64-unknown-linux-gnu/6.0.0/crtbeginS.o(从 GCC 主干,6.0.0-trunk 安装)

我将该目录添加到 ldconfig 并运行 ldconfig,但它没有选择任何其他目录。 (我在想,因为它是 .o 而不是 .so)

作为临时修复,我尝试创建一个指向 /usr/local/lib64/crtbeginS.o 的符号链接 - 但这给出了相同的错误。

怎么办,所以一直看/usr/local/lib/gcc/x86_64-unknown-linux-gnu/6.0.0/目录找库?

如果我运行gcc -print-search-dirs|grep "/usr/local/lib/gcc/x86_64-unknown-linux-gnu/6.0.0",它会显示库:=/usr/local/lib/gcc/x86_64-unknown-linux-gnu/6.0.0/:... 但是,这当然是 gcc 而不是 ld。

如果我运行 ld --verbose | grep SEARCH_DIR,我会看到 /usr/local/lib/gcc_x86_64-unknown-linux-gnu/6.0.0 不包括在内。

我真的很想将此作为系统范围的默认设置,因此我不必为所有内容都提供 -L。如果有必要,我可以从源代码构建 bintools。

【问题讨论】:

    标签: gcc g++ ld binutils


    【解决方案1】:

    我能做什么,所以 /usr/local/lib/gcc/x86_64-unknown-linux-gnu/6.0.0/ 目录总是 看了看图书馆?

    您必须更改 ld 配置

    根据您的系统,ld.so 可以使用 /etc/ 中的文件进行配置,也可能使用 '/etc/ld.so.conf.d 或 /etc/ld.so.d 下的文件进行配置。 ld.soldconfig 的手册页是开始阅读如何更改 ld 配置的好地方。

    【讨论】:

      猜你喜欢
      • 2019-04-19
      • 2017-05-15
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      • 2018-07-17
      • 2011-07-17
      • 1970-01-01
      • 2019-06-30
      相关资源
      最近更新 更多