我无法将静态库链接到cmake
问题描述:
我尝试将X11,giblib作为静态库链接到cmake。我无法将静态库链接到cmake
所以我把这段代码中的CMakeLists.txt
set(BUILD_SHARED_LIBS FALSE)
set(CMAKE_EXE_LINKER_FLAGS '-static')
target_link_libraries(Printmade2 Imlib2)
target_link_libraries(Printmade2 /usr/lib/i386-linux-gnu/libX11.a)
target_link_libraries(Printmade2 /usr/lib/libgiblib.a)
后执行 '做',出现此消息。
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/../../../libX11.a(OpenDis.o): In function `OutOfMemory':
(.text+0x459): undefined reference to `xcb_disconnect'
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/../../../libX11.a(OpenDis.o): In function `XOpenDisplay':
(.text+0x8f5): undefined reference to `xcb_get_setup'
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/../../../libX11.a(OpenDis.o): In function `XOpenDisplay':
(.text+0xedb): undefined reference to `xcb_get_maximum_request_length'
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/../../../libX11.a(xcb_disp.o): In function `_XConnectXCB':
(.text+0x176): undefined reference to `xcb_parse_display'
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/../../../libX11.a(xcb_disp.o): In function `_XConnectXCB':
(.text+0x1d7): undefined reference to `xcb_connect_to_display_with_auth_info'
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/../../../libX11.a(xcb_disp.o): In function `_XConnectXCB':
(.text+0x1f5): undefined reference to `xcb_get_file_descriptor'
...
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/../../../libX11.a(ClDisplay.o): In function `XCloseDisplay':
(.text+0xbd): undefined reference to `xcb_disconnect'
collect2: ld returned 1 exit status
我猜的东西是missded,所以我应该链接更多的东西
,但我无法找到我的文件系统.o文件将。
(例如,OpenDis.o,xcb_disp.o,ClDisplay.o)
我应该怎么做才能解决这个问题?
当我链接libxcb库时,错误消息被更改。 '/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/../../../libxcb.a(xcb_auth.o):在函数'_xcb_get_auth_info'中: ( .text + 0x68a):对'XdmcpWrap'的未定义引用也许libxcb.a需要一些其他库。有什么方法可以知道相关的图书馆吗? – Oz6848
我找到每个相关的库。非常感谢您的回答。 – Oz6848
作为参考,许多库项目将创建类似_/usr/lib/pkgconfig/libname.pc_该文件包含提示链接器来查找的东西。不知道Xorg的东西是否创建了这些文件,但是当你试图推断静态链接的依赖时,它们可以作为提示来使用 – mtdarland