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 相同的目录下mipsel-openwrt-linux-gcc交叉编译时找不到库文件的解决办法_第1张图片
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下运行。

你可能感兴趣的:(openwrt)