Для статического связывания ld
не будет выполнять работу по автоматическому поиску зависимостей для wget
, как это волшебным образом происходит для общих объектов. Некоторые скрипты пытаются составить такой список за вас, другие - нет. Вы попали в последний случай.
Вам нужно составить список библиотек и их зависимостей самостоятельно.
Если вы еще не знаете, что такое полный список deps для вашего статического wget
бинарника, вам нужно сначала собрать его как обычный (разделяемый), а затем получить такой список с помощью ldd /path/to/wget
, где /path/to/wget
- это ваш бинарник wget (его можно найти в дереве исходников, обычно что-то вроде src/wget
)
Вам нужно получить все статические версии разделяемых библиотек. Обычно они содержатся в пакетах -dev или devel, которые предоставляет ваш дистрибутив.
Каждая библиотека в списке должна быть переставлена или добавлена дважды или более раз, потому что ld
не пытается искать во всех статических архивах определенный символ и выдает ошибку. Итак, ваша libgnutls.a, вероятно, зависит от libtasn1.a для символов asn1_*. Тогда вам нужно добавить в командную строку следующее: -lgnutls -ltasn1
. Если от libtasn1.a зависит еще одна библиотека, то в командную строку ссылки снова нужно добавить.
Неопределенные символы могут быть устранены путем просмотра списка символов статической библиотеки с помощью nm /usr/lib/lib.a
. Или найти эту библиотеку в определенном каталоге с помощью fgrep -l имя_символа /usr/lib/*.a
. Обратите внимание, что такой поиск (с помощью fgrep) покажет обе библиотеки, требующие и предоставляющие такой символ, так что это только быстрый тест.
Библиотеки могут быть добавлены с помощью переменной LIBS=
в сценарий configure
: LIBS="-lgnutls -ltasn1"
.
Попробуйте это,
join <(sort -r file2.csv) <(sort -r file1.csv) > file3.csv
Я думаю, GNU Coreutils join
— ваша команда:
join file2.csv file1.csv > file3.csv
Если файлы CSV разделены запятыми, а не символами табуляции, используйте вместо них:
join -t, file2.csv file1.csv > file3.csv