如何设置CMAKE静态链接(未定义引用`dlopen')?

时间:2012-10-22 10:16:11

标签: c++ linux gcc cmake static-linking

我需要为我的项目设置静态链接。

现状是:

target_link_libraries(armd
  ${SQLITE3_LIBRARY}
  ${CMAKE_THREAD_LIBS_INIT}
  rt)

if(CMAKE_COMPILER_IS_GNUCXX)
    set(CMAKE_CXX_FLAGS "-O0 -Wall -fmessage-length=0")

无法在设备上运行,我需要静态链接(为设备添加-static)但是当我这样做时

set(CMAKE_CXX_FLAGS "-O0 -Wall -fmessage-length=0 -static")

我得到了:

/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libsqlite3.a(sqlite3.o): In function `unixDlOpen':
sqlite3.c:(.text+0x3e5d4): undefined reference to `dlopen'

如何在不收到此错误的情况下为sqlite设置静态链接?或者我的根系统可能遗漏了什么?

1 个答案:

答案 0 :(得分:2)

当静态链接某些档案时,您需要自己指定其依赖项(在本例中为libdl)。请注意,在链接器命令行上指定存档文件的顺序比链接共享对象更重要。