当前位置: 首页 > 知识库问答 >
问题:

如何在GCC的搜索路径中添加目录(未找到CRTI.O)

黎玺
2023-03-14

“…………………………“/raid60/raid2/opt/local/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../../x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/x86_64-conda_cos6-linux-gnu/bin/ld:找不到scrt1.o:没有这样的文件或目录AID60/RAID2/OPT/local/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../../x86_64-conda_cos6-linux-gnu/7.3.0/../../../../../x86_64-conda_cos6-linux-gnu/7.3.0//../../../x86_64-conda_cos6-linux-lgomp”

gcc似乎有问题,找不到包括scrt1.0、crti.o和其他目录。我在/home/opt/anaconda/x86_64-conda_cos6-linux-gnu/sysroot/usr/lib目录中找到了这些文件。因为我没有adminstration previlage,所以我不能安装libc6-dev这样的包。在https://askubuntu.com/questions/251978/nong-find-crti-o-no-sucy-file-or-directory和https://askubuntu.com/questions/251978/nong-find-crti-o-no-sucy-file-or-directory中,我将上面的目录添加到~/.cshrc。

  setenv LD_LIBRARY_PATH
  /home/opt/anaconda/x86_64-conda_cos6-linux-gnu/sysroot/usr/lib

但是gcc仍然无法识别此路径。

我还尝试使用LDFLGAS将此路径输入到configure中

 > ./configure
 > LDFLAGS="-L/home/opt/anaconda/x86_64-conda_cos6-linux-gnu/sysroot/usr/lib"

但没有成功。最后,我在configure中添加了LDFLAGS

../write_obsdiags.o../wrwrfmassa.o../wrwrfnmma.o-l/opt/local/wrf_kpp/gsi35/comgsiv3.5_enkfv1.1/lib-lsp_i4r8-lsgio_i4r4-lsfcio_i4r4-lnemsio-lbacio-lw3nco_i4r8-lw3emc_i4r8-lw3emc_i4r8-lcrtm/opt/local/wrf_kpp/wrfv3//external/io_int/libwrfio_external/io_netcdf/libwrfio_nf.a/opt/local/wrf_kpp/wrfv3//frame/pack_utils.o/opt/local/wrf_kpp/wrfv3//frame/module_machine.o/opt/local/wrf_kpp/wrfv3//frame/module_machine.o/opt/local/wrf_kpp/wrfv3//frame/module_driver_constants.o-l/home/srvx11/lehre/users11/lehre/users/a1276905/.conda/envs/libgsi/lib-llapack-lblas-fopenmp/raid60/raid2/opt/local/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../../../x86_64-conda_cos6-linux-gnu/bin/ld:找不到scrt1.o:没有这样的文件或目录

更新3我已经使用选项-B将包含CRTI.O的目录添加到GCC的搜索路径中。当我调用

gcc -print-search-dirs

在已知路径中,我看到了所需的路径“/home/opt/anaconda/x86_64-conda_cos6-linux-gnu/sysroot/usr/lib”

库:=/home/opt/anaconda/x86_64-conda_cos6-linux-gnu/sysroot/usr/lib/x86_64-unknown-linux-gnu/5.3.0/://home/opt/anaconda/x86_64-conda_cos6-linux-gnu/sysroot/lib/://usr/local/gcc/x86_64-unknown-linux-gnu/5.3.0//usr/local/lib/x86_64-unknown-linux-gnu/5.3.0/4-unknown-linux-gnu/lib/x86_64-unknown-linux-gnu/5.3.0/:/usr/local/lib/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../x86_64-unknown-linux-gnu/5.3.0///usr/local/lib/gcc/x86_64-unknown-linux-gnu/5.3.0///usr/local/lib/gcc/x86_64-unknown-linux-gnu/5.3.0//usr/-linux-gnu/5.3.0/.../../../..//lib64/://lib/x86_64-unknown-linux-gnu/5.3.0/://lib/../lib64/://usr/lib/x86_64-unknown-linux-gnu/5.3.0/:/usr/lib/../lib//usr/local/x86_64-unknown-linux-gnu/5.3.0//usr/lib//lib/x86_64-unknown-linux-gnu/5.3.0/-GNU/5.3.0/../../../:/lib/://usr/lib/

但我还没说完。

共有1个答案

潘胤
2023-03-14

链接器搜索路径仅用于库。它不用于定位任何对象文件,包括启动对象文件。

如果工具链是用sysroot支持构建的,那么可以使用--sysroot来更改GCC查找其大部分文件的位置。这可能需要添加符号链接或复制文件来创建一个工作的sysroot环境,并且可能有些麻烦。

如果只想更改启动文件的位置,可以使用自定义的GCC规范文件进行更改。不幸的是,您需要使用什么在某种程度上取决于GCC版本和GCC的构建方式。这意味着作为一个起点,您需要使用内置在GCC中的规范,您可以通过以下命令获得这些规范:

gcc -dumpspecs
gcc --specs=crt.specs
 类似资料:
  • 我正在尝试运行一个由其他人创建的已经存在的eclipse项目。 在将其导入eclipse并尝试作为->Java应用程序运行之后,它失败了,因为它在bin/resources中找不到.properties文件 我打印出eclipse使用的类路径 果然,它包括bin和所有lib/*.jars,但不包括bin/resources。将.properties文件复制到bin中可以使程序正常工作,但我想了解如

  • 因此,我有一个虚拟环境,在那里我安装了软件包<code>实用程序<code>。我知道我安装了它,因为当我执行<code>pip安装utlity<code>并获得以下输出时: 要求已经满足:效用在。/anaconda 3/envs/splice buster/lib/python 3.5/site-packages(1.0) 这是的输出: ['', '/home/joel/anaconda3/env

  • 问题内容: 我希望gcc 除了通常的include目录之外,还包含来自的文件,但似乎没有类似物。 我知道我可以在编译时(或在makefile中)在命令行中添加include目录,但是我真的想在这里采用通用方法,例如在库中。 问题答案: 尝试设置(对于C头文件)或(对于C ++头文件)。 正如Ciro所述,它将为C和C ++(以及任何其他语言)设置路径。 在GCC文档中有更多详细信息。

  • 问题内容: 说我有一个边列表,每个边包含两个节点(到和从)。找到两个给定节点的边缘的最佳方法是什么?请注意,边缘的节点可能会重复。 假设我在这种格式下具有优势: 1 <-> 5 3 <-> 7 5 <-> 6 2 <-> 6 然后,诸如1 5的查询将返回 true 。 然后,诸如5 2之类的查询将返回 true, 因为5连接6并且6连接至2。 然后,诸如1 7的查询将返回 false 。 然后,诸

  • 我有3个项目,ProjectB,ProjectC。 当我构建ProjectB时,它没有任何问题。但是当我试图构建ProjectA时,它在控制台上出现以下错误而失败。 评估项目“:ProjectB”时出现问题。在项目:ProjectB中找不到路径为:ProjectC的项目。 build.gradle-ProjectC settings.gradle-ProjectC build.gradle - 项

  • 本文向大家介绍python添加模块搜索路径方法,包括了python添加模块搜索路径方法的使用技巧和注意事项,需要的朋友参考一下 1.函数添加 import sys sys.path sys.path.append("c:\\") 2.修改pythonpath(试不通) windows:PYTHONPATH 3.增加.pth文件(可以) site-packages或者python安装目录添加 xx.