Я пытаюсь скомпилировать использование llvm-3.1 пакета. Я выполняю 12,04 x64 (3.2.0-26 ядра) && 12.10 (3.5.0-4), x64 бэкпортировал llvm-3.1 от quantal, затем debian экспериментальный.
Затем я попробовал 12.10 собственным пакетом человечности llvm-3.1; это перестало работать также.
user@system:/tmp/llvm-test# make compiling cpp yacc file: decaf-llvm.y output file: decaf-llvm bison -b decaf-llvm -d decaf-llvm.y /bin/mv -f decaf-llvm.tab.c decaf-llvm.tab.cc flex -odecaf-llvm.lex.cc decaf-llvm.lex g++ -o ./decaf-llvm decaf-llvm.tab.cc decaf-llvm.lex.cc decaf-stdlib.c `llvm-config --cppflags --ldflags --libs core jit native` -ly -ll /usr/lib/llvm-3.1/lib/libLLVMSupport.a(Signals.o): In function `PrintStackTrace(void*)': (.text+0x6c): undefined reference to `dladdr' /usr/lib/llvm-3.1/lib/libLLVMSupport.a(Signals.o): In function `PrintStackTrace(void*)': (.text+0x18f): undefined reference to `dladdr' collect2: error: ld returned 1 exit status make: *** [decaf-llvm] Error 1
Я знаю работы кода, поскольку я выполнил его в песнях прекрасное использование llvm-3.1-6.fc18(rpm)
Google был немного полезен с этим:
"В некоторых системах, incluning Ubuntu 11.10, соединение может перестать работать с сообщением, что libLLVMSupport.a в функциональном PrintStackTrace (пусто*) имеет неопределенную ссылку на dladdr".
"Обходное решение должно скомпилировать LLVM с cmake определение следующей переменной:-DCMAKE_EXE_LINKER_FLAGS =-ldl"
http://svn.dsource.org/projects/bindings/trunk/llvm-3.0/Readme
Я проверил y дважды ldflags, и все кажется хорошо.
user@system:/llvm-config --ldflags -L/usr/lib/llvm-3.1/lib -lpthread -lffi -ldl -lm
Я неясен из того, что сделать затем; какие-либо предложения?
Я задал (и ответил) похожий вопрос о переполнении стека . Приспосабливая мой ответ на этот вопрос к вашему:
Библиотека, требующая символы, включена в -lLLVMSupport
, поэтому -ldl
должна следовать после -lLLVMSupport
. См. Почему порядок опции -l в gcc имеет значение? в Переполнении стека. Вам нужно изменить это:
`llvm-config --cppflags --ldflags --libs core jit native`
На это:
`llvm-config --cppflags --libs core jit native` `llvm-config --ldflags`
И компоновщик должен быть успешным. Дайте мне знать, если вы найдете лучшее решение для исправления порядка --ldflags
.
sudo apt-get install libx11-xcb-dev llvm-dev x11proto-gl-dev x11proto-dri2-dev libxext-dev libxdamage-dev libxfixes-dev libxcb-glx0 libxcb-glx0-dev libpng12-dev