如何将一个目录添加到GCC的搜索路径(crti.o未找到)

问题描述 投票:0回答:1

我安装GSI V3.5 https://dtcenter.org/com-GSI/users/。我在GCC没有经验,所以我不能使用正确的terminolgy这一点。编译程序后,我得到一个错误

” ...........“/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:没有这样的文件或目录/raid60/raid2/opt/local/bin/../lib/gcc/x86_64-conda_cos6- Linux的GNU / 7.3.0 /../../../../ x86_64的-conda_cos6-Linux的GNU /斌/劳工处:找不到crti.o:没有这样的文件或目录/ RAID60 / RAID2的/ opt / local / bin目录/../ lib中/ GCC / x86_64的-conda_cos6-Linux的GNU / 7.3.0 /../../../../ x86_64的-conda_cos6-Linux的GNU /斌/劳工处:找不到 - LM /raid60/raid2/opt/local/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu /斌/劳工处:找不到-lgomp“

它似乎有与海湾合作委员会的问题不能找到包括Scrt1.0,crti.o和others.I发现在这个目录/ home /选择/蟒蛇/ x86_64的-conda_cos6-Linux的GNU / SYSROOT在/ usr /这些文件的目录库。因为我没有adminstration previlage,所建议的,我不能像安装的libc6-dev的软件包。 Follwing https://askubuntu.com/questions/251978/cannot-find-crti-o-no-such-file-or-directoryhttps://askubuntu.com/questions/251978/cannot-find-crti-o-no-such-file-or-directory,我说上面〜/ .cshrc中的目录。

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

但还是GCC不承认这条道路。

我也试过这条道路送入使用配置LDFLGAS

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

但没有成功。最后我添加到LDFLAGS配置

脚本。但它也没有工作。任何帮助,高度赞赏。

当然,预期的答案会使得GCC找出路

的crti.o和其他丢失的文件。

更新:由于弗洛里安魏玛的建议,我所做的文件crt.specs。我也更新了配置相关线路。这些文件是在dropbox link。但我仍然得到同样的错误。

UPDATE 2.这些都是一些线发生错误之前:

../write_obsdiags.o ../wrwrfmassa.o ../wrwrfnmma.o -L /选择/本地/ wrf_kpp / gsi35 / comGSIv3.5_EnKFv1.1 / lib目录-lsp_i4r8 -lsigio_i4r4 -lsfcio_i4r4 -lnemsio -lbacio -lw3nco_i4r8 -lbufr_i4r8 -lw3emc_i4r8 -lcrtm /opt/local/wrf_kpp/WRFV3//external/io_int/libwrfio_int.a /opt/local/wrf_kpp/WRFV3//external/io_netcdf/libwrfio_nf.a /选择/本地/ wrf_kpp / WRFV3 //帧/ pack_utils.o /opt/local/wrf_kpp/WRFV3//frame/module_machine.o /opt/local/wrf_kpp/WRFV3//frame/module_driver_constants.o -L /家庭/ srvx11 /莱雷/用户/ a1276905 / .conda / ENVS / libgsi / lib目录-lnetcdff -lnetcdf -L /家庭/ srvx11 /莱雷/用户/ a1276905 / .conda / ENVS / libgsi / lib目录-L /家庭/ srvx11 /莱雷/用户/ 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 /斌/劳工处:找不到Scrt1.o:没有这样的文件或目录

更新3我已经使用选项-B添加目录包括crti.o海湾合作委员会的搜索路径。当调用

gcc -print-search-dirs

我看到我所希望的路径 “/家/选择/蟒蛇/ x86_64的-conda_cos6-Linux的GNU / SYSROOT / usr / lib目录” 已知路径中

库:= /家庭/选择/蟒蛇/ x86_64的-conda_cos6-Linux的GNU / SYSROOT / usr / lib目录/ x86_64的未知-Linux的GNU / 5.3.0 /:/家庭的/ opt /蟒蛇/ x86_64的-conda_cos6-Linux的GNU / SYSROOT / usr / lib中/:在/ usr / local / lib目录/ GCC / x86_64的未知-Linux的GNU / 5.3.0 /:在/ usr / local / lib目录/ GCC / x86_64的未知-Linux的GNU / 5.3。 0 /../../../../ x86_64的未知-Linux的GNU / LIB / x86_64的未知-Linux的GNU / 5.3.0 /:在/ usr /本地/ LIB / GCC / x86_64的-unknown- Linux的GNU / 5.3.0 /../../../../ x86_64的未知-Linux的GNU / lib目录/../ lib64的/:在/ usr / local / lib目录/ GCC / x86_64的未知Linux的-gnu / 5.3.0 /../../../ x86_64的未知-Linux的GNU / 5.3.0 /:在/ usr / local / lib目录/ GCC / x86_64的未知-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中/../ lib64的/:在/ usr / local / lib目录/ GCC / x86_64的未知-Linux的GNU / 5.3.0 /../../../。 ./x86_64-unknown-linux-gnu/lib/:/usr/local/lib/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../:/lib/:/usr / lib目录/

但我无法通过。

unix gcc csh
1个回答
0
投票

链接器的搜索路径只用于库。它不用于查找任何目标文件,包括启动目标文件。

如果工具链与SYSROOT支持,那么你可以使用--sysroot以更改GCC查找大多数文件。这可能需要添加符号链接或将文件复制到创建工作SYSROOT环境,可能有点繁琐。

如果你想改变启动文件只是位置,你可以用自定义GCC specs文件,这样做。你需要使用什么是不幸的是一定程度上取决于版本的GCC和GCC是如何构建的。这意味着,作为一个起点,你需要使用内置到GCC,您可以获取使用此命令的规格:

gcc -dumpspecs

有在此文件中,*startfile:*endfile:两个部分,即感兴趣。复制这两行并按照每进一个新的文件中的行,说crt.specs。编辑并取代Scrt1.ocrt1.ocrti.o(在*startfiles:)和crtn.o(在*endfiles:)与绝对路径要使用(推测可能的文件,你已经使用libc6-dev dpkg -x提取)的文件。

然后你可以使用通过调用GCC新的规格:

gcc --specs=crt.specs

它一定会为你节省很多的麻烦,如果你能得到系统管理员安装libc6-dev包。这是为了确保这些文件都是最新随着libc6包仅保留安全的方式。

© www.soinside.com 2019 - 2024. All rights reserved.