自ubuntu升级以来对'dlopen'的未定义引用

时间:2013-11-12 10:18:24

标签: c ubuntu gcc

我经历了对'dlopen'问题的未定义引用,因为我升级到了ubuntu 13.10和gcc 4.8.1。

makefile已经工作多年了。特定的电话是

gcc -rdynamic -o ov_dbutil ov_dbutil.o libov.so -ldl

错误是:

libov.so: undefined reference to `dlopen'
libov.so: undefined reference to `dlclose'
libov.so: undefined reference to `dlerror'
libov.so: undefined reference to `dlsym'
collect2: error: ld returned 1 exit status
make: *** [ov_dbutil] Error 1

这是一个gcc问题吗?

ov_dbutil使用以下行编译

gcc -g -Wall -O0 -shared -std=c99 -fno-strict-aliasing   -DPLT_SYSTEM_LINUX=1 -DPLT_USE_BUFFERED_STREAMS=1 -DPLT_SERVER_TRUNC_ONLY=1 -DNDEBUG   -DOV_SYSTEM_LINUX=1    -I../../../plt/include/ -I../../../ks/include/ -I../../include/ -I../../model/ -I../../source/codegen/ -I../../source/builder/ -I../../source/example/ -I../../source/kshist/ -I../../source/dynov/ -I../../source/tasklib/ -I../../source/dbparse/ -I../../source/dbdump/ -I../../../../libml/ -I../../include/runtimeserver/ -I. -c ../../source/dbutil/ov_dbutil.c -o ov_dbutil.o

没有错误或警告

2 个答案:

答案 0 :(得分:0)

添加-Wl,--no-as-needed作为链接器参数。

答案 1 :(得分:0)

我的问题通过在.so的衬里行添加-ldl来解决,你想再次链接,在上面的示例中它被称为libov.so。