【问题标题】:udevadm code with undefined reference error未定义引用错误的 udevadm 代码
【发布时间】:2014-04-11 08:00:31
【问题描述】:

udevadm 在我的桌面上运行良好。但是,我已经编写了链接到libudev.so 的代码,通过使用以下命令编译我的代码:

gcc -g -Wall -ludev test.c -o testadm

我在以下日志中发现了一堆错误:

对 udev_monitor_receive_device 的未定义引用

对 udev_device_unref 的未定义引用

对 udev_monitor_get_fd 的未定义引用

对 udev_monitor_get_fd 的未定义引用

.......

我认为libudev.so 生活在/lib/x86_64-linux-gnu/ 中已经可以很好地链接。

请提供反馈。

【问题讨论】:

    标签: linux linux-kernel gcc-warning udev


    【解决方案1】:

    我认为 gcc 没有找到 libudev。找到它所在的位置并使用-L 选项将路径传递给 gcc,例如

    gcc -g -Wall -L/lib/crazylibs -ludev test.c -o testadm
    

    如果找不到,您可能会丢失 devel 版本,例如 libudev-devel(不知道您的发行版)。

    【讨论】:

    • 我的桌面上有 Ubuntu 12.04 和 12.10。通过运行这个 gcc -g -Wall -L/lib/libudev.so.0.13.0 -ludev test.c -o testadm,我仍然得到相同的未定义引用。
    • 在 Ubuntu 中,我认为 libudev-dev 等于 libudev-devel,我也将它安装到我的桌面上,但仍然出现错误。
    • -L 是你的库的路径,你必须有libudev.so。尝试创建符号链接libudev.solibudev.so.0.13.0。此外,/lib 是库搜索的默认路径,因此您不必使用 -L 传递它。尝试符号链接。
    • gcc -g -Wall /lib/x86_64-linux-gnu/libudev.so.0.13.0 -ludev testadm.c -o testadm
    • 感谢 AVD。我刚刚发现了问题。奇怪的是,当我使用 gcc 4.6 时,错误不断出现。但是,当我尝试 gcc 4.4 时,它可以工作并且可执行文件运行良好。我不知道为什么会发生这种情况,但最终解决了。感谢您的反馈。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-06
    相关资源
    最近更新 更多