Bug 38991 - Некорректные пути к libgcc в собираемом приложении
Summary: Некорректные пути к libgcc в собираемом приложении
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: libgccjit9-devel (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Gleb F-Malinovskiy
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-09-25 07:15 MSK by Denis Smirnov
Modified: 2023-02-24 10:40 MSK (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Denis Smirnov 2020-09-25 07:15:08 MSK
пример из: https://gcc.gnu.org/onlinedocs/jit/intro/tutorial01.html
собирается, но не работает вываливая ошибки:

/usr/bin/ld.default: cannot find crtbeginS.o: No such file or directory
/usr/bin/ld.default: cannot find -lgcc
/usr/bin/ld.default: cannot find -lgcc_s
libgccjit.so: error: error invoking gcc driver
NULL result

Запуск под strace показывает, что собранный бинарник ищет:
libgcc.so и crtbeginS.o, crtend.o, crtendS.o  где угодно, только не в /usr/lib64/gcc/..., например в /usr/x86_64-alt-linux/lib64

access("../lib64/gcc/x86_64-alt-linux/9.3.1/crtbeginS.o", R_OK) = -1 ENOENT (No such file or directory)
access("../lib64/gcc/crtbeginS.o", R_OK) = -1 ENOENT (No such file or directory)
access("../x86_64-alt-linux/lib/x86_64-alt-linux/9.3.1/crtbeginS.o", R_OK) = -1 ENOENT (No such file or directory)
access("../x86_64-alt-linux/lib/../lib64/crtbeginS.o", R_OK) = -1 ENOENT (No such file or directory)
access("../lib64/x86_64-alt-linux/9.3.1/crtbeginS.o", R_OK) = -1 ENOENT (No such file or directory)
access("../lib64/../lib64/crtbeginS.o", R_OK) = -1 ENOENT (No such file or directory)
access("/lib/x86_64-alt-linux/9.3.1/crtbeginS.o", R_OK) = -1 ENOENT (No such file or directory)
access("/lib/../lib64/crtbeginS.o", R_OK) = -1 ENOENT (No such file or directory)
access("/usr/lib/x86_64-alt-linux/9.3.1/crtbeginS.o", R_OK) = -1 ENOENT (No such file or directory)
access("/usr/lib/../lib64/crtbeginS.o", R_OK) = -1 ENOENT (No such file or directory)
access("../x86_64-alt-linux/lib/crtbeginS.o", R_OK) = -1 ENOENT (No such file or directory)
access("../lib64/crtbeginS.o", R_OK)    = -1 ENOENT (No such file or directory)
access("/lib/crtbeginS.o", R_OK)        = -1 ENOENT (No such file or directory)
access("/usr/lib/crtbeginS.o", R_OK)    = -1 ENOENT (No such file or directory)

Обращаю внимание во-первых на использование полной версии в некоторых путях (9.3.1, а не 9), и на то, что используемые абсолютные пути имеют мало общего с реальным местположением этих каталогов у нас.

Работающий gccjit нужен для сборки gccemacs.
Comment 1 Denis Smirnov 2023-02-24 10:40:12 MSK
Проверил со свежим gcc -- работает.