我安装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-directory而https://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目录/
但我无法通过。
链接器的搜索路径只用于库。它不用于查找任何目标文件,包括启动目标文件。
如果工具链与SYSROOT支持,那么你可以使用--sysroot
以更改GCC查找大多数文件。这可能需要添加符号链接或将文件复制到创建工作SYSROOT环境,可能有点繁琐。
如果你想改变启动文件只是位置,你可以用自定义GCC specs文件,这样做。你需要使用什么是不幸的是一定程度上取决于版本的GCC和GCC是如何构建的。这意味着,作为一个起点,你需要使用内置到GCC,您可以获取使用此命令的规格:
gcc -dumpspecs
有在此文件中,*startfile:
和*endfile:
两个部分,即感兴趣。复制这两行并按照每进一个新的文件中的行,说crt.specs
。编辑并取代Scrt1.o
,crt1.o
,crti.o
(在*startfiles:
)和crtn.o
(在*endfiles:
)与绝对路径要使用(推测可能的文件,你已经使用libc6-dev
dpkg -x
提取)的文件。
然后你可以使用通过调用GCC新的规格:
gcc --specs=crt.specs
它一定会为你节省很多的麻烦,如果你能得到系统管理员安装libc6-dev
包。这是为了确保这些文件都是最新随着libc6
包仅保留安全的方式。