我是在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.
可能有什么不对?