c++ - 将 C++ 库添加到 Eclipse C++ 项目

标签 c++ linux raspberry-pi eclipse-cdt

我正在尝试将现有库添加到 Eclipse。我用 cross compiler适用于带有 Eclipse IDE 的 C++,安装在虚拟 linux debian 机器上。

找到mmapGpiohere .

/mmapGpioBasicRev1.tar.gz 有一个 cpp 和一个带有小演示程序的 h 文件。

我已经毫无问题地编译了这段代码。生成一个.o 文件。我已使用 ar -q libmmapGpio.a mmapgpio.o 成功存档文件

我已将我的 libmmapGpio.a 放在 ~/.../UserLib 目录 我已将我的 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;
}

所以交叉编译完成了,但是链接器说找不到-llibmapGpio!

我已经在properties项目中做了申报; 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

错误:

  • 在搜索 -lmmapGpio 时跳过不兼容的/home/.../UserLib/libmmapGpio.so
  • ld: 找不到-lmmapGpio

最佳答案

"why this message ?"

这是因为根据您的设置,链接器实际上会查找名为 liblibmmapGpio.a 的库文件。

"... so crosscompilation is done but linker say "cannot find -llibmapGpio" !
...
- Libraries : libmmapGpio"

你只需要在链接库设置中指定没有lib前缀的库即可:

mmapGpio

enter image description here

Eclipse CDT Builder 将其作为 -l 选项传递给链接器,链接器会自动扩展以在指定的附加路径。

另请参阅此问答以获取更多插图示例和链接:
Problems importing libraries to my c++ project, how to fix this?

关于c++ - 将 C++ 库添加到 Eclipse C++ 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29683405/

相关文章:

Python:打开随机 LED 并延迟关闭

linux - 链接 EXE 时厌倦了编写非立即 .so,如何缓解?

c++ - QML ListView 和 c++ : ReferenceError Model not defined

c++ - 将实例变量类型映射到模板成员函数

c++ - Solaris C++编译器出现 "Fatal error in ccfe"编译错误的原因是什么?

java - CentOS 7 的 Java SELinux 策略模块在哪里?

linux - tail -f OR less +F 如何高亮新行

linux - Raspberry Pi 终端环境中的 Unicode 和 256 色

python - 通过交互式 shell 控制 Raspberry Pi 的 Telegram 机器人

c++ - 读取 Unicode 文件