Ubuntu 20.04下libnotify hello world程序编译链接错误如何解决
问题原因
你出现链接错误的核心原因是GCC编译时的参数顺序错误:Linux的ld链接器按从左到右的顺序处理输入参数,依赖库(-lxxx类参数)必须放在调用了库函数的源文件/目标文件的后面。你现在把pkg-config返回的带-lnotify的参数放在了hello_world.c前面,链接器扫描库的时候还没处理源文件的符号需求,就直接把库跳过了,最后就会报未定义引用错误。
修复方法
把编译命令调整为源文件在前,pkg-config参数在后即可:
gcc hello_world.c `pkg-config --cflags --libs libnotify`
执行命令后即可正常编译出可执行文件,运行后就能看到系统弹出的通知提示。
你也可以用标准拆分写法,头文件参数在前、库参数在后,逻辑更清晰:
gcc `pkg-config --cflags libnotify` hello_world.c `pkg-config --libs libnotify`
内容的提问来源于stack exchange,提问作者Tobias Gierke
相关产品推荐
相关产品推荐

