2016-03-16 5 views
0

У меня проблема с ошибкой выше. В m-коде реализован HMAC. Я попытался решить проблему с помощью этой ссылки: Hereundefined reference EVP_sha1, HMAC, Id возвращен 1 статус выхода

Но это просто не работает, поэтому я надеюсь, что вы можете мне помочь. im действительно застрял в этом и играл с QMAKE_CXXFLAGS, но просто не получил никакого позитивного решения.

вот .pro:

QT  += core gui webkit network 

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 

TARGET = csui 
TEMPLATE = app 




#QMAKE_CFLAGS_RELEASE += -lssl -lcrypto 
#QMAKE_CFLAGS_RELEASE += -lcrypto 



target.path = /home/msw 

INSTALLS += target 

SOURCES += main.cpp\ 
    mainwindow.cpp \ 
    qcolpushbutton.cpp \ 
    librfid/mifare.cpp \ 
    librfid/list.cpp \ 
    librfid/brp.cpp \ 
    qrfid.cpp \ 
    qscaledlabel.cpp \ 
    statelogic.cpp \ 
    qcsnp.cpp \ 
    qchargepoint.cpp \ 
    qi2cnode.cpp \ 
    libhotp-tan.cpp 

HEADERS += mainwindow.h \ 
    qcolpushbutton.h \ 
    debug.h \ 
    config.h \ 
    librfid/mifare.h \ 
    librfid/list.h \ 
    librfid/brp.h \ 
    qrfid.h \ 
    qscaledlabel.h \ 
    statelogic.h \ 
    qcsnp.h \ 
    qchargepoint.h \ 
    qi2cnode.h \ 
    libhotp-tan.h 

FORMS += mainwindow.ui 

RESOURCES += \ 
    res/res.qrc 

и ссылки из Makefile

CFLAGS  = -pipe -isystem /home/msw/crossdev/OSELAS.BSP-RaspberryPi/platform-RaspberryPi/sysroot-target/include -isystem /home/msw/crossdev/OSELAS.BSP-RaspberryPi/platform-RaspberryPi/sysroot-target/usr/include -O2 -Wall -W -D_REENTRANT $(DEFINES) 
CXXFLAGS  = -pipe -isystem /home/msw/crossdev/OSELAS.BSP-RaspberryPi/platform-RaspberryPi/sysroot-target/include -isystem /home/msw/crossdev/OSELAS.BSP-RaspberryPi/platform-RaspberryPi/sysroot-target/usr/include -O2 -Wall -W -D_REENTRANT $(DEFINES) 

13:45:58: Führe Schritte für Projekt csui aus... 
 
13:45:59: Starte "/opt/qt-4.8.3e-armhf/sysroot-cross/bin/qmake" '/home/msw/Arbeitsfläche/Experimentelles Programm/csui.pro' -r -spec /opt/qt-4.8.3e-armhf/sysroot-target/usr/mkspecs/qws/linux-ptx-g++ 
 
13:45:59: Der Prozess "/opt/qt-4.8.3e-armhf/sysroot-cross/bin/qmake" wurde normal beendet. 
 
13:45:59: Starte "/usr/bin/make" -w 
 
make: Entering directory `/home/msw/Arbeitsfläche/Experimentelles Programm' 
 
arm-1136jfs-linux-gnueabihf-g++ -L/home/msw/crossdev/OSELAS.BSP-RaspberryPi/platform-RaspberryPi/sysroot-target/lib -L/home/msw/crossdev/OSELAS.BSP-RaspberryPi/platform-RaspberryPi/sysroot-target/usr/lib -Wl,-rpath-link -Wl,/home/msw/crossdev/OSELAS.BSP-RaspberryPi/platform-RaspberryPi/sysroot-target/lib -Wl,-rpath-link -Wl,/home/msw/crossdev/OSELAS.BSP-RaspberryPi/platform-RaspberryPi/sysroot-target/usr/lib -Wl,-O1 -o csui main.o mainwindow.o qcolpushbutton.o mifare.o list.o brp.o qrfid.o qscaledlabel.o statelogic.o qcsnp.o qchargepoint.o qi2cnode.o libhotp-tan.o moc_mainwindow.o moc_qcolpushbutton.o moc_qrfid.o moc_qscaledlabel.o moc_statelogic.o moc_qcsnp.o moc_qchargepoint.o moc_qi2cnode.o qrc_res.o -L/home/msw/crossdev/OSELAS.BSP-RaspberryPi/platform-RaspberryPi/sysroot-target/lib -L/home/msw/crossdev/OSELAS.BSP-RaspberryPi/platform-RaspberryPi/sysroot-target/usr/lib -lQtWebKit -lQtGui -L/home/msw/crossdev/OSELAS.BSP-RaspberryPi/platform-RaspberryPi/sysroot-target/usr/lib -L/home/msw/crossdev/OSELAS.BSP-RaspberryPi/platform-RaspberryPi/sysroot-target/lib -lQtNetwork -lQtCore -lpthread 
 
make: Leaving directory `/home/msw/Arbeitsfläche/Experimentelles Programm' 
 
libhotp-tan.o: In function `hotpa(unsigned char const*, unsigned char const*, char*, unsigned int, unsigned char const*, unsigned int)': 
 
libhotp-tan.cpp:(.text+0x74): undefined reference to `EVP_sha1' 
 
libhotp-tan.cpp:(.text+0xb4): undefined reference to `HMAC' 
 
collect2: error: ld returned 1 exit status 
 
make: *** [csui] Error 1 
 
13:46:01: Der Prozess "/usr/bin/make" wurde mit dem Rückgabewert 2 beendet. 
 
Fehler beim Erstellen/Deployment des Projekts csui(Ziel: Embedded Linux) 
 
Bei der Ausführung von Schritt 'Make'

СПАСИБО !!

+1

Чтобы получить помощь при сбое связи, вам необходимо разместить хотя бы пропущенную командную строку линкера и последующие ошибки, стенографические. –

+0

Я вставил pro и некоторые части make-файла надеюсь, что это поможет. Благодаря! – MuchWow

+0

Командная строка неудачного компоновщика является командной строкой 'g ++ \ gcc', которая не выполняется при выполнении и за ней следуют сообщения об ошибках связи. Это не находится в make-файле. Вы увидите, что они будут отображаться на выходе сборки, когда сборка завершится с ошибкой. Скопируйте отказоустойчивую командную строку и сообщения об ошибках из вывода сборки и вставьте их в тело вашего вопроса * с отступом 4 пробела *. –

ответ

1

Ваша команда рычажный механизм:

arm-1136jfs-linux-gnueabihf-g++ \ 
-L/home/msw/crossdev/OSELAS.BSP-RaspberryPi/platform-RaspberryPi/sysroot-target/lib \ 
-L/home/msw/crossdev/OSELAS.BSP-RaspberryPi/platform-RaspberryPi/sysroot-target/usr/lib \ 
-Wl,-rpath-link \ 
-Wl,/home/msw/crossdev/OSELAS.BSP-RaspberryPi/platform-RaspberryPi/sysroot-target/lib \ 
-Wl,-rpath-link \ 
-Wl,/home/msw/crossdev/OSELAS.BSP-RaspberryPi/platform-RaspberryPi/sysroot-target/usr/lib \ 
-Wl,-O1 \ 
-o csui main.o mainwindow.o qcolpushbutton.o mifare.o list.o brp.o qrfid.o \ 
qscaledlabel.o statelogic.o qcsnp.o qchargepoint.o qi2cnode.o libhotp-tan.o \ 
moc_mainwindow.o moc_qcolpushbutton.o moc_qrfid.o moc_qscaledlabel.o moc_statelogic.o \ 
moc_qcsnp.o moc_qchargepoint.o moc_qi2cnode.o qrc_res.o \  
-L/home/msw/crossdev/OSELAS.BSP-RaspberryPi/platform-RaspberryPi/sysroot-target/lib \ 
-L/home/msw/crossdev/OSELAS.BSP-RaspberryPi/platform-RaspberryPi/sysroot-target/usr/lib \ 
-lQtWebKit \ 
-lQtGui \ 
-L/home/msw/crossdev/OSELAS.BSP-RaspberryPi/platform-RaspberryPi/sysroot-target/usr/lib \ 
-L/home/msw/crossdev/OSELAS.BSP-RaspberryPi/platform-RaspberryPi/sysroot-target/lib \ 
-lQtNetwork \ 
-lQtCore \ 
-lpthread 

(Там много избыточного повторения там)

неопределенных символов EVP_sha1 и HMAC определены в libcrypto, для которых вам нужно также связать libssl, но -lssl -lcrypto не входят в список возможностей библиотеки, которые вы передаете в компоновщик. Вам нужно добавить их.

Я не знаком с QMAKE, но я считаю, библиотечные параметры должны быть определены в LIBS При создании линкера с -lssl -lcrypto командной строкой следующей -lQtCore вы должны быть все в порядке.

Я заметил, что -lssl -lcrypto появляется в закомментированных настройках:

#QMAKE_CFLAGS_RELEASE += -lssl -lcrypto 

Это не сработал бы, так как это настройки параметров для C Compiler в режиме выпуска, а не линкер. Аналогично QMAKE_CXXFLAGS, о котором вы говорите, возился с, устанавливает параметры для компилятора C++, а не компоновщика.

+0

СПАСИБО ВАМ ДЕЙСТВИТЕЛЬНО !!! Я собирался сдаться, но ты спас меня: D – MuchWow

+0

Во всем этом вы заметили недостающие библиотеки, шляпы от вас. – Niall