编译一个APP时,链接出错:
/usr/bin/ld: out/obj/keyboard.o: in function `keyboard_state_get_plain_codepoint':
/mnt/flutter/src/keyboard.c:365: undefined reference to `xkb_state_key_get_utf32'
我的链接命令:
cc -I./include -I/usr/include/libdrm -DBUILD_TEXT_INPUT_PLUGIN -DBUILD_TEST_PLUGIN -O0 -ggdb -lgbm -ldrm -lGLESv2 -lEGL -lsystemd -linput -ludev -lxkbcommon -lrt -lpthread -ldl -lm -L/usr/lib/arm-linux-gnueabihf
明明libxkbcommon.so里有这个函数:
nm -D /usr/lib/arm-linux-gnueabihf/libxkbcommon.so
...
00014c5c T xkb_state_key_get_utf32@@V_0.5.0
..
而且不光是这个函数,所有动态链接的函数都找不到。
我是在qemu-user-static模式下编译的,不知道和这个有关吗
离线
原来-l需要放到object之后
有个文章专门解释了这个问题
https://stackoverflow.com/a/43305704/388520
结贴
离线
马后炮一下,其实我也遇到过,最后实在没有办法,确实换一下链接库的位置就好了,一直傻傻的认为是gcc的bug
离线
链接好像是有先后顺序的
离线