Ubuntu下Yocto 2.3.1:Eclipse Yocto插件添加库方法求助
解决Yocto Eclipse Autotools项目中添加dbm库的链接错误
嘿,我完全懂你遇到的困扰——在Yocto SDK搭配Eclipse的Autotools项目里,光包含头文件可不够,链接器还得知道要找对应的库文件才行。针对你的情况,我整理了具体的解决步骤:
第一步:先确认SDK里是否包含dbm库
首先去你的sysroot路径下检查有没有对应的库文件:
ls /opt/poky/2.3.1/sysroots/cortexa7hf-neon-vfpv4-poky-linux-gnueabi/usr/lib | grep dbm
你大概率会看到libgdbm.so(很多Linux发行版里dbm是gdbm的兼容实现)或者libdbm.so。如果没找到,那你需要先在Yocto构建镜像时添加gdbm这个recipe,重新生成SDK再安装。
第二步:在Eclipse图形界面配置链接选项
如果SDK已经有库了,直接在Eclipse里配置:
- 右键你的Autotools项目 → Properties
- 展开左侧的C/C++ Build → 选择Settings
- 切换到Tool Settings标签页,找到Cross GCC Linker → Libraries
- 在**Libraries (-l)**区域点击「添加」按钮,输入
dbm或者gdbm(根据你找到的库名,比如库是libgdbm.so就输gdbm) - 确认**Library search path (-L)**里已经包含了sysroot的lib路径:
/opt/poky/2.3.1/sysroots/cortexa7hf-neon-vfpv4-poky-linux-gnueabi/usr/lib(Yocto插件通常会自动配置,没的话手动添加)
- 在**Libraries (-l)**区域点击「添加」按钮,输入
第三步:更规范的Autotools脚本修改(推荐)
因为你用的是Autotools项目,直接修改配置脚本更符合项目规范:
- 打开项目根目录的
configure.ac,添加以下代码(用来检查dbm库是否存在):
AC_CHECK_LIB([dbm], [dbminit], [], [AC_MSG_ERROR([dbm library not found - please install it via Yocto SDK])])
- 打开
Makefile.am,在LDADD或AM_LDFLAGS里加上链接参数:
LDADD = -ldbm
- 回到Eclipse,右键项目 → Autotools → Reconfigure Project,然后重新构建项目
额外提醒:修正代码里的小错误
你当前的代码里有个变量类型错误:
char fn = "someFile"; // 错误:char类型不能存字符串指针
应该改成:
const char *fn = "someFile";
不然编译时也会出现类型不匹配的问题。
内容的提问来源于stack exchange,提问作者Quarz
相关产品推荐
相关产品推荐

