Связь с libQt5Core

Я установил Qt5.4 с помощью онлайн-установщика (работает на ubuntu 14). Я пытаюсь скомпилировать свой источник С++ и ссылку на libQt5Core, но ld выдает ошибку:

make
g++ -Wall test.o Party.o Communication.o FileParser.o PeerConnection.o ServerModule.o Utilities.o -o party -g -L/home/bush/Qt/5.4/gcc_64/lib -L/usr/lib/x86_64-linux-gnu/ -lQt5Core -lboost_system -lpthread
/usr/bin/ld: warning: libicui18n.so.53, needed by /home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libicuuc.so.53, needed by /home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so, not found (try using -rpath or -rpath-link)
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucal_setMillis_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucnv_fromUnicode_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucal_get_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucal_inDaylightTime_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucal_open_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucnv_countAvailable_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucnv_countAliases_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `u_errorName_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucal_openCountryTimeZones_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `u_strToUpper_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucnv_getDefaultName_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `uenum_next_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucol_strcoll_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucnv_getMaxCharSize_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucnv_getAvailableName_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucol_open_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucal_getTimeZoneDisplayName_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucnv_toUnicode_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `uenum_close_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucol_getSortKey_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucnv_getAlias_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucnv_close_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucol_setAttribute_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucal_close_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucal_openTimeZoneIDEnumeration_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucal_openTimeZones_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucnv_getStandardName_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucol_close_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucnv_compareNames_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucal_clone_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `u_strToLower_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucal_getDefaultTimeZone_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucnv_open_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucnv_setSubstChars_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucal_getDSTSavings_53'
collect2: error: ld returned 1 exit status
make: *** [party] Error 1

Мой файл makefile:

CPPFLAGS=-g -c --std=c++0x -I/usr/include -I/home/bush/Qt/5.4/gcc_64/include -I/home/bush/Qt/5.4/gcc_64/include/QtCore -I/usr/include/boost
LDFLAGS=-g -L/home/bush/Qt/5.4/gcc_64/lib -L/usr/lib/x86_64-linux-gnu/ -lQt5Core -lboost_system -lpthread

all:party

party:test.o Party.o Communication.o FileParser.o PeerConnection.o ServerModule.o Utilities.o
    g++ -Wall $^ -o party $(LDFLAGS)

test.o:test.cpp
    g++ $(CPPFLAGS) test.cpp
Party.o:Party.cpp
    g++ $(CPPFLAGS) Party.cpp
Communication.o:Communication.cpp
    g++ $(CPPFLAGS) Communication.cpp
FileParser.o:FileParser.cpp
    g++ -fPIC $(CPPFLAGS) FileParser.cpp
PeerConnection.o:PeerConnection.cpp
    g++ $(CPPFLAGS) PeerConnection.cpp
ServerModule.o:ServerModule.cpp
    g++ $(CPPFLAGS) ServerModule.cpp
Utilities.o:Utilities.cpp
    g++ $(CPPFLAGS) Utilities.cpp

Ответы

Ответ 1

Я столкнулся с той же проблемой. но я нахожу свой выход именно этим кодом.

export  LD_LIBRARY_PATH=/usr/local/Qt/5.5/gcc_64/lib:$LD_LIBRARY_PATH

Ответ 2

В моем случае это сработало после того, как я сделал 3 символических ссылки. Lib был установлен, но у меня была более новая версия (55), чем ожидалось (54).

sudo ln -s /usr/local/Qt/5.5/gcc_64/lib/libicui18n.so.54 /usr/lib/x86_64-linux-gnu/libicui18n.so.54
sudo ln -s /usr/local/Qt/5.5/gcc_64/lib/libicuuc.so.54 /usr/lib/x86_64-linux-gnu/libicuuc.so.54
sudo ln -s /usr/local/Qt/5.5/gcc_64/lib/libicudata.so.54 /usr/lib/x86_64-linux-gnu/libicudata.so.54

Ответ 3

Я получаю такие ошибки, когда пытался создать мой проект под Debian 8 (с libicu52 из официального репозитория) из QtCreator. Я решил это, изменив "Environment" для моего Qt Kit (5.8.0): LD_LIBRARY_PATH =/opt/Qt/5.8/gcc_64/lib: ${LD_LIBRARY_PATH}.

Снимок экрана: изменения отмечены красной линией

Ответ 4

Я получаю эту ошибку, когда пытаюсь создать Iris под Ubuntu. Я решил это, удалив CONFIG + = статический из файла .pro

Ответ 5

Я только что исправил эту проблему.

Попробуй это:

Gedit ~/.bashrc

export LD_LIBRARY_PATH =/usr/lib/x86_64-linux-gnu: $ LD_LIBRARY_PATH

сохранить файл

источник ~/.bashrc

Я думаю, это потому, что моя стандартная установка qt находится в папке /usr/lib/x86_64-linux-gnu, но она не связана... поэтому добавление ее в путь работает для меня. GL

Ответ 6

Попробуйте добавить -licuuc в LDFLAGS файла makefile.

sudo apt-get install libicu-dev