《UNIX环境高级编程》程序清单8-7编译错误:TELL_WAIT, WAIT_PARENT, TELL_CHILD未定义

解决TELL_WAIT未定义
本文解决了《UNIX环境高级编程》程序清单8-7中遇到的TELL_WAIT等宏未定义的问题。通过查找源代码并使用grep命令定位到了定义文件tellwait.c。复制此文件并使用gcc命令成功编译。

   今天学习到《UNIX环境高级编程》程序清单8-7,遇到一个编译错误:TELL_WAIT, WAIT_PARENT, TELL_CHILD未定义。我在本书所附源代码中用下面这条命令找到了它们的定义文件(在apue.2e目录下执行):

    grep -r TELL_WAIT *

    这些函数定义在./apue.2e/lib/tellwait.c文件中。

    我将这个文件复制到相应目录下,用下面这条命令编译文件:

    gcc -o sample8_7 sample8_7.c error.c tellwait.c

    成功。

    开心一下。:)

 

 

傅绍兵

2011-01-23

 

 

解决 `std::condition_variable` 出现 `'undefined reference to `std::__1::condition_variable::__do_timed_wait'` 链接错误,可尝试以下方法: #### 选择合适的编译器和标准库 保证使用的编译器和标准库版本相互兼容,并且支持 `std::condition_variable`。一般来说,GCC 4.8 及以上版本支持 C++11 标准,其中包含 `std::condition_variable`。可通过以下命令检查 GCC 版本: ```bash g++ --version ``` #### 使用正确的编译选项 在编译时,使用正确的 C++ 标准选项。对于 C++11 及以上标准,可使用 `-std=c++11`、`-std=c++14`、`-std=c++17` 或 `-std=c++20` 等选项。示例如下: ```bash g++ -std=c++11 your_file.cpp -o your_program ``` #### 正确处理库的链接顺序 链接时,确保正确指定所需的库,并且顺序无误。如果使用了多线程库,需要链接 `pthread` 库: ```bash g++ -std=c++11 your_file.cpp -lpthread -o your_program ``` #### 清理和重新编译 旧的编译文件可能会引发链接问题。尝试清理项目并重新编译: ```bash rm -rf build # 清理编译文件 mkdir build cd build cmake .. make ``` #### 检查系统库 保证系统中安装了正确版本的 C++ 标准库。在 Linux 系统中,可通过包管理器更新或安装最新的 C++ 标准库: ```bash sudo apt-get update sudo apt-get install libstdc++-xx-dev # xx 是版本号 ``` #### 检查代码依赖 确保代码中没有使用不兼容的库或头文件,不同版本的库可能会导致符号冲突。 #### 检查预编译信息 如果提示未定义的函数是程序中的函数,检查该函数的代码的上下文是否有 `#ifdef` 或者 `#ifndef` 等预编译信息,这也很有可能导致相关代码没有被编译而出现“undefined reference to”提示[^4]。
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值