Ошибка libtool во время компоновки
Я компилирую courier-authlib-0.66.1, который использует libtool для компиляции. Я изменил все Make-файлы, чтобы удалить CFLAGS и CXXFLAGS в --mode= линиях связи, потому что я использую некоторые специально установленные флаги компилятора для clang, которые запутают компоновщик.
Во время компиляции я получил следующую ошибку:
libtool: ссылка: /usr/bin/nm -B .libs/authsasl.o .libs/authsaslcram.o .libs/authsasllogin.o .libs/authsaslplain.o .libs/authsaslfrombase64.o .libs/authsasltobase64o. | /bin/sed 's/.* //' | сортировать | uniq>.libs / libcourierauthsasl.exp
./libtool: eval: строка 1085: синтаксическая ошибка рядом с неожиданным токеном `|'
По-видимому, в команде есть две полосы, и я должен удалить одну из них. Однако когда я открыл файл libtool и перешел на строку 1085, я обнаружил только следующий код
eval "$my_cmd"
Не могли бы вы сказать мне, как найти причину этой ошибки и устранить ее? Или какие документы могут мне помочь? Спасибо!
1 ответ
Проблема решена. Я задал вопрос в списке рассылки Курьера и получил очень хороший ответ: http://sourceforge.net/p/courier/mailman/message/32327466/
Я просто скопировал ключевую часть здесь.
$ fgrep 'sort | uniq' libtool
export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe |
\$SED 's/.* //' | sort | uniq > \$export_symbols"
На самом деле, переменная \$global_symbol_pipe почему-то отсутствует, поэтому я просто удалил ее. Конечно, это просто грязное решение...