ldc2 -static fails Ошибка ld.gold не удается найти -lphobos2-ldc -ldruntime-ldc
tl;dr LDC компилирует и связывает нормально, пока не будет установлен флаг -static, тогда ld.gold не сможет найти библиотеки phobos или druntime.
ОС: Gentoo 64-бит Ядро: 5.4.48 Версия DMD: 2.090 Версия LDC2: 1.20.1 (DMD v2.090.1, LLVM 10.0.0)
Я пытаюсь статически связать некоторые файлы, которые я сделал, чтобы двоичные файлы можно было запускать без необходимости использования фобоса. Если я попытаюсь скомпилировать с помощью 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'
которые, как я полагал, вызваны отсутствием найденных фобосов и библиотек 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
Я также пробовал обновить LD_LIBRARY_PATHS
в моем ~/.bashrc (и поиск его после изменения), но это не повлияло.
Кажется, я не могу найти никого, у кого была бы эта или подобная проблема, но я чувствую, что это может иметь какое-то отношение к тому, как gentoo работает с различными компиляторами D.
Я пробовал использовать как eselect, так и инструкции для непрофессионала, удаляя ldc2, чтобы следовать указаниям для каждого метода, без какого-либо эффекта. Беспокоит то, что пути к исполняемым файлам и библиотекам, упомянутые в вики ( https://wiki.gentoo.org/wiki/Dlang), не существуют в моей системе. Я также не смог найти никаких конфигурационных файлов ldc2, а добавление и редактирование ~/.ldc2 или ~/.config/ldc2 ничего не изменили.
Теперь я также попытался удалить dub, dmd, ldc2 и layman и переустановить (сначала непрофессионал, добавив наложение, затем установив dmd и ldc2), но у меня такая же проблема, а пути и файлы конфигурации все еще не в место, которое вики gentoo на dlang утверждает, что они должны быть.
Есть идеи о том, что должно произойти, чтобы решить эту проблему?
1 ответ
В gentoo есть флаг использования static-libs
что я не видел. Я перекомпилировал этот флаг, и он работает правильно.