我试图将现有库添加到Eclipse。我将odt_a用于C++和Eclipse IDE,安装在虚拟linux debian计算机上。mmapGpio
库位于cross compiler。/mmapGpioBasicRev1.tar.gz
具有一个cpp
和一个h
文件以及一个小型演示程序。
我已经毫无问题地编译了此代码。生成了.o
文件。我已使用ar -q libmmapGpio.a mmapgpio.o
成功归档了文件
我已将libmmapGpio.a
放入~/.../UserLib directory
中
我已将mmapGpio.h
放入~/.../UserInclude
中
至此一切正常。
我打开一个使用mmapGpio
库的新项目:
#include "mmapGpio.h"
#include "stdio.h"
int main(void){
mmapGpio rpiGpio; // instantiate an instance of the mmapGpio class
rpiGpio.setPinDir(17,mmapGpio::OUTPUT); // set GPIO17 to output
while(1) {// toggle pin as fast as possible
rpiGpio.writePinHigh(17);
rpiGpio.writePinLow(17);
}
return 0;
}
这样就完成了交叉编译,但是链接器说
cannot find -llibmapGpio
!我已经在房地产项目中声明过; C/C++常规
/home/octopuss/rpi/UserInclude
(mmapGpio.h文件)/home/octopuss/rpi/UserLib
(libmmapGpio.a文件)libmmapGpio
为什么会收到此消息?
详细信息->控制台 View
03:16:30 **** Build of configuration Debug for project Gpio1 ****
make all
Building file: ../Gpio1.cpp
Invoking: Cross G++ Compiler
arm-linux-gnueabihf-g++ -I/home/octopuss/rpi/UserInclude -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"Gpio1.d" -MT"Gpio1.d" -o "Gpio1.o" "../Gpio1.cpp"
Finished building: ../Gpio1.cpp
Building target: Gpio1
Invoking: Cross G++ Linker
arm-linux-gnueabihf-g++ -L/home/octopuss/rpi/UserLib -o "Gpio1" ./Gpio1.o -lmmapGpio
/home/octopuss/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: skipping incompatible /home/octopuss/rpi/UserLib/libmmapGpio.so when searching for -lmmapGpio
/home/octopuss/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: cannot find -lmmapGpio
collect2: error: ld returned 1 exit status
make: *** [Gpio1] Erreur 1
错误:
最佳答案
这是因为通过您的设置,链接器实际上会查找名为liblibmmapGpio.a
的库文件。
您只需要在链接器库设置中指定不带lib
前缀的库:mmapGpio
Eclipse CDT Builder将其作为-l
选项传递给链接器,该链接器会自动扩展为在指定的其他路径下搜索 libmmapGpio.a
。
另请参阅此问答以获取更多图解示例和链接:
Problems importing libraries to my c++ project, how to fix this?