将 C++ 库添加到 Eclipse C++ 项目
Add C++ Library to eclipse C++ Project
我正在尝试将现有库添加到 Eclipse。我使用 cross compiler for C++ 和 Eclipse IDE,安装在虚拟 linux debian 机器上。
找到 mmapGpio
库 here。
/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
为什么我会收到这条消息?
详细信息 -> 控制台视图
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
错误:
- 跳过不兼容的 /home/.../UserLib/libmmapGpio.so 在搜索 -lmmapGpio
时
- ld: 找不到 -lmmapGpio
"why this message ?"
这是因为根据您的设置,链接器实际上会查找名为 liblibmmapGpio.a
.
的库文件
"... so crosscompilation is done but linker say "cannot find -llibmapGpio" !
...
- Libraries : libmmapGpio"
您只需在链接库设置中指定不带lib
前缀的库即可:
mmapGpio
Eclipse CDT Builder 将其作为 -l
选项传递给链接器,链接器会自动扩展以搜索 libmmapGpio.a
指定的附加路径。
另请参阅此问答以获取更多示例和链接:
Problems importing libraries to my c++ project, how to fix this?
我发现了问题...我的 .so 库不是 ARM 交叉编译的,所以有一个 X86 库与我的 ARM 程序不兼容。
我解决了这个设置erm-linuxgnuabihf-前缀和他的交叉设置参数的路径。
感谢 TTAVAR PEI 和 Scott Stensland
享受
我正在尝试将现有库添加到 Eclipse。我使用 cross compiler for C++ 和 Eclipse IDE,安装在虚拟 linux debian 机器上。
找到 mmapGpio
库 here。
/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
为什么我会收到这条消息?
详细信息 -> 控制台视图
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
错误:
- 跳过不兼容的 /home/.../UserLib/libmmapGpio.so 在搜索 -lmmapGpio 时
- ld: 找不到 -lmmapGpio
"why this message ?"
这是因为根据您的设置,链接器实际上会查找名为 liblibmmapGpio.a
.
"... so crosscompilation is done but linker say "cannot find -llibmapGpio" !
...
- Libraries : libmmapGpio"
您只需在链接库设置中指定不带lib
前缀的库即可:
mmapGpio
Eclipse CDT Builder 将其作为 -l
选项传递给链接器,链接器会自动扩展以搜索 libmmapGpio.a
指定的附加路径。
另请参阅此问答以获取更多示例和链接:
Problems importing libraries to my c++ project, how to fix this?
我发现了问题...我的 .so 库不是 ARM 交叉编译的,所以有一个 X86 库与我的 ARM 程序不兼容。
我解决了这个设置erm-linuxgnuabihf-前缀和他的交叉设置参数的路径。
感谢 TTAVAR PEI 和 Scott Stensland
享受