ldc2 -static失败ld.gold错误找不到-lphobos2-ldc -ldruntime-ldc

问题描述

tl; dr LDC编译并链接正常,直到使用-static标志为止,否则l​​d.gold无法找到phobos或druntime库。

操作系统:Gentoo 64位 内核:5.4.48 DMD版本:2.090 LDC2版本:1.20.1(DMD v2.090.1,LLVM 10.0.0)

我正在尝试静态链接我制作的某些文件,以便可以在不需要phobos的情况下运行二进制文件。如果我尝试使用dmd或ldc2进行编译,则一切正常,但是当我使用以下命令进行编译时:

$ ldc2 -static -main filename

我收到以下错误

/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld.gold: error: cannot find -lphobos2-ldc
/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld.gold: error: cannot find -ldruntime-ldc```

很多 我认为error: undefined reference to 'XYZ'是由于缺乏phobos和druntime库导致的。

我尝试自行运行cc,以指定我的libphobos2-ldc-shared.so和libdruntime-ldc-shared.so文件所在的位置,同时指定这些文件的结果相同:

$ /usr/bin/cc scans.o -static -o scans -fuse-ld=gold -L/usr/lib/ldc2/1.20/lib64 -libphobos2-ldc-shared.so -libdruntime-ldc-shared.so -Wl,--gc-sections -lrt -ldl -lpthread -lm -m64 -v

/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld.gold: error: cannot find -libphobos2-ldc-shared.so
/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld.gold: error: cannot find -libdruntime-ldc-shared.so

我也曾尝试在我的〜/ .bashrc中更新LD_LIBRARY_PATHS(并在更改后进行采购),但这没有效果

我似乎找不到其他遇到此问题或类似问题的人,但我觉得这可能与gentoo如何处理不同的D编译器有关。

我尝试同时使用eselect方向和外行方向,删除了ldc2以遵循每种方法的方向,但没有任何效果。令人担心的是,我的系统上不存在Wiki(https://wiki.gentoo.org/wiki/Dlang#Executables_paths)中提到的可执行文件和库路径。我也找不到任何ldc2配置文件,也没有添加和编辑〜/ .ldc2或〜/ .config / ldc2更改任何内容

我现在也尝试删除dub,dmd,ldc2和非专业人士,然后重新安装(首先是layman,添加覆盖,然后安装dmd和ldc2),但是我遇到了同样的问题,并且路径和配置文件仍然不在dlang上的gentoo Wiki上说的应该不是这个地方。

关于解决该问题需要采取什么措施的任何想法?

解决方法

在gentoo中,有一个我未看到的使用标志static-libs。我重新编译了这个活动标记,它可以正常工作。