Ошибка 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 почему-то отсутствует, поэтому я просто удалил ее. Конечно, это просто грязное решение...

Другие вопросы по тегам