undefined reference to `dlopen' 等dlfcn.h类问题的另一种错误解决

linux下或者android下编程经常遇到dlopen 、dlclose等未定义函数,其实 只要我们链接上dl库就可以解决这个问题,在makefile 加上-ldl选项,便可以解决这个问题。

很多文章都讲,正常的话-ldl就可以解决问题。

但是我遇到的makefile是这样的:
DESTDIR = /usr/local
CC = gcc

CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall
LFLAGS += -lpthread -ldl
APP_BINARY = mjpg_streamer
PLUGINS = input_uvc.so
PLUGINS += output_file.so
PLUGINS += output_http.so
PLUGINS += input_testpicture.so
PLUGINS += output_autofocus.so
PLUGINS += input_gspcav1.so
PLUGINS += input_file.so
PLUGINS += input_control.so

OBJECTS=mjpg_streamer.o utils.o

all: application plugins

application: $(APP_BINARY)

plugins: $(PLUGINS)

$(APP_BINARY): mjpg_streamer.c mjpg_streamer.h mjpg_streamer.o utils.c utils.h utils.o
	$(CC) $(CFLAGS) $(LFLAGS) $(OBJECTS) -o $(APP_BINARY) 
	chmod 755 $(APP_BINARY)
	……

实际上它已经带有-ldl了,在LFLAGS里,但还是存在以上错误。
gcc -O2 -DLINUX -D_GNU_SOURCE -Wall -lpthread -ldl mjpg_streamer.o utils.o -o mjpg_streamer
mjpg_streamer.o: In function signal_handler': mjpg_streamer.c:(.text+0x122): undefined reference todlclose’
mjpg_streamer.c:(.text+0x144): undefined reference to `dlclose’

那就是GCC语法错误,我把它改成:
$(CC) $(OBJECTS) -o $(APP_BINARY) $(CFLAGS) $(LFLAGS)
调换位置,编译通过。
GCC语法, 其实我是小白,有望和大家探讨

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值