Хорошо, вот такая ситуация: я пытаюсь использовать более старое программное обеспечение: отлично работает на Ubuntu Lucid, не работает на Natty.
Итак, я strace
d вокруг немного, и получается, что это программное обеспечение вызывает ld
, и ld
в конечном итоге дает сбой с:
.../ld: crt1.o: No such file: No such file or directory
... да, старый файл crti.o отсутствует ошибка :) Однако я хотел бы задать вопрос в более общих выражениях ...
Дело в том, что это "автономный" (старше) ld
здесь, и когда я запускаю .../ld -verbose | less
, я получаю:
...
SEARCH_DIR("/usr/local/lib");
SEARCH_DIR("/lib");
SEARCH_DIR("/usr/lib");
...
Теперь дело в том, что:
- На Lucid
crt1.o
в /usr/lib/crt1.o
- На Натти,
crt1.o
в /usr/lib/i386-linux-gnu/crt1.o
... поэтому не удивительно, почему crt1.o
не может быть найдено, я полагаю.Кажется, все, что мне нужно сделать, это сказать ld
искать crt1.o
в /usr/lib/i386-linux-gnu
, но как мне это сделать?
Я думал, что смогу использовать опцию -L
, но man ld
говорит:
to link a file "hello.o":
ld -o <output> /lib/crt0.o hello.o -lc
This tells ld to produce a file called output as the result of linking
the file "/lib/crt0.o" with "hello.o" and the library "libc.a", which
will come from the standard search directories.
...
-L searchdir
--library-path=searchdir
Add path searchdir to the list of paths that ld will search for
archive libraries and ld control scripts.
... означает, что '-L
' повлияет на то, где мы ищем "libc.a
"(в примере с человеком) - но не для объектных файлов.
Я бы на самом деле предпочел переменную окружения для этого, но я пробовал и LD_PRELOAD_PATH
, и LD_LIBRARY_PATH
безрезультатно (я думаю, они связаны с "общими объектами", и эти .o
файлыне один из тех).
Кто-нибудь знает, существует ли переменная окружения (предпочтительно - или, если нет, опция командной строки для ld
), которая будет контролировать, где ld
ищет .o
объектные файлы?
В качестве примечания, я думаю, я мог бы просто использовать символическую ссылку /usr/lib/i386-linux-gnu/crt1.o
в /usr/lib/
, но я бы лучше использовал переменную окружения, если она существует ... Если нет, есть ли другие возможные решения дляэтот?
Заранее благодарен за любые ответы,
Приветствия!
РЕДАКТИРОВАТЬ: возможно, уместно: Даниэль Кегель - - с проблемами новичка - sysroot: "ld: не может открыть crt1.о "