mipsel-openwrt-linux-gcc交叉编译时找不到库文件的解决办法 - Go语言中文社区

mipsel-openwrt-linux-gcc交叉编译时找不到库文件的解决办法


1、在学习《linux程序设计》的时候利用ubuntu14.04系统自带的dbm数据库对一个CD程序想要交叉编译,然都一直到mips架构下的WRTnode2P, 但是在交叉编译的时候找不到libgdbm库,在WRTnode.cc中也找不到对应的库文件(有一个libgdbm,但是版本吗大不相同)。于是找到从网上下载源码,因为dbm相关的函数都是用C语言开发的,可以自行交叉编译得到相应的可执行文件。
从网上下载源代码的命令:

sudo apt-get source libgdbm-dev

现在有2个源文件,一个头文件
app_ui.c access.c access.h。access.c access.h中包含dbm的函数的文件,将下载的源代码的文件夹放入到与app_ui.c 相同的目录下这里写图片描述
gdbm的源代码就在gdbm-1.8.3中

makefile 书写 (还不是很简练,makefile刚刚学会制作)

all:    app_ui

objs = app_ui.o  access.o     dbmdelete.o  dbmrdonly.o  findkey.o     gdbmfetch.o   gdbmsync.o
                dbmdirfno.o  dbmseq.o     gdbmclose.o   gdbmopen.o 
           getopt.o     bucket.o     dbmfetch.o   dbmstore.o 
          gdbmdelete.o  gdbmreorg.o   global.o     close.o    dbminit.o 
  delete.o     gdbmerrno.o   gdbmseq.o     hash.o      update.o  
  dbmopen.o    falloc.o     gdbmexists.o  gdbmsetopt.o  seq.o       version.o
        dbmclose.o   dbmpagfno.o  fetch.o      gdbmfdesc.o   gdbmstore.o   store.o

#INCLUDE=/usr/include/gdbm
INCLUDE=-I./gdbm-1.8.3
LIBS=-lgdbm
# On some distributoions you may need to change the above line to include
# the compatability library, as shown below.
#LIBS=-lgdbm_compat -lgdbm
#CC = gcc
CC = mipsel-openwrt-linux-gcc

%.o:
        $(CC) $(INCLUDE) -c *.c ./gdbm-1.8.3/*.c

app_ui: $(objs)

#       $(CC) -o $@  $(objs) -lgdbm
        $(CC) -o app_ui  $(objs)

在make编译的时候可能会出现有多个main函数的错误(可能包含测试文件),在目录下删除包含main函数的 *.o 文件再次make 就可以得到可执行文件app_ui。 经过测试可以在WRTnode下运行。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_22340085/article/details/50886007
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-04-10 21:12:45
  • 阅读 ( 1390 )
  • 分类:Linux

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢