小编Ser*_*off的帖子

使用`ld`链接时出现"未定义的符号引用"错误

我是在Linux上编写程序的新手.我有一个使用一个单独的模块程序shm_open,ftruncate,mmap,fork,和wait.我编译了这个程序,gcc -c然后将其链接ld -lrt(需要librt shm_open),我得到一个奇怪的链接器错误:

undefined reference to symbol 'waitpid@@GLIBC_2.2.5'
Run Code Online (Sandbox Code Playgroud)

该联机帮助wait表示

Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
   waitid():
       Since glibc 2.26: _XOPEN_SOURCE >= 500 ||
           _POSIX_C_SOURCE >= 200809L
       Glibc 2.25 and earlier:
           _XOPEN_SOURCE
Run Code Online (Sandbox Code Playgroud)

#define _XOPEN_SOURCE如果我这样做,那么输入代码就无济于事了

gcc -c -D _XOPEN_SOURCE 
Run Code Online (Sandbox Code Playgroud)

编译器说隐式声明ftruncate.

我在VMWare下运行Ubuntu.GCC是版本gcc (Ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609.

可能有什么不对?

c glibc undefined-reference

4
推荐指数
1
解决办法
421
查看次数

标签 统计

c ×1

glibc ×1

undefined-reference ×1