LFS: GCC ссылки WORGN
Я застрял в главе 6.20 текущей книги LFS. Я получил:
$ readelf -l a.out | grep Requesting
[Requesting program interpreter: /tools/lib64/ld-linux-x86-64.so.2]
вместо желаемого:
[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
Все остальные тесты, приведенные ниже в этой главе, успешно пройдены.
Это мой второй раз, когда вся книга была чрезвычайно осторожной, и в прошлый раз я получил такой же результат. Может ли быть какая-то ошибка?
Для справки просто сказано: "Наиболее вероятная причина в том, что что-то пошло не так с настройкой файла спецификации". Это ссылка на 6.10, в которой говорится: "Это хорошая идея - визуально проверить файл спецификаций, чтобы убедиться, что предполагаемое изменение действительно было сделано", но нет никаких указаний относительно того, что это за предполагаемые изменения. Но во время второго раунда я проверил /tools/lib/gcc/x86_64-pc-linux-gnu/7.2.0/specs, что там не упоминалось о "инструментах" и были упомянуты пути /usr.
1 ответ
Кажется, я решил эту проблему, создав новый файл спецификаций для нового компилятора:
gcc -dumpspecs | sed -e 's@/tools@@g' > `dirname $(gcc --print-libgcc-file-name)`/specs
После этого я повторяю тест:
echo 'int main(){}' > dummy.c
cc dummy.c -v -Wl,--verbose &> dummy.log
readelf -l a.out | grep ': /lib'
И все хорошо.