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



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

当前状态为:

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")

无法在设备上工作,我需要静态链接(设备添加 - 静态),但是当我做

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的静态链接?也许我的根系缺少某些内容?

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

相关内容

最新更新