Fedora7下用mssqlodbc连接SQL Server的C程序编译错误解决
解决Fedora7下编译MSSQL ODBC程序时的GLIBC_PRIVATE符号未定义问题
以下是针对你遇到的__h_errno@GLIBC_PRIVATE和__mktemp@GLIBC_PRIVATE未定义错误的可行解决方法:
调整链接库顺序
gcc的链接器按从左到右的顺序解析依赖,原命令中-lc放在-lpthread前可能导致libpthread无法找到libc中的私有符号。修改命令,将-lc移到末尾,或者直接省略(gcc默认会自动链接libc):gcc -o prog prog.c -lpthread -lodbcinst -lodbc -lm -lc简化版:
gcc -o prog prog.c -lpthread -lodbcinst -lodbc -lm验证libpthread的依赖一致性
执行以下命令检查libpthread依赖的libc版本是否与你用nm验证的一致:ldd /lib64/libpthread.so.0如果输出的libc.so.6路径与你检查的路径不同,说明系统存在多版本libc,可临时调整
LD_LIBRARY_PATH指向正确的libc目录,或编译时通过-L参数指定库路径:gcc -o prog prog.c -L/path/to/correct/libc -lpthread -lodbcinst -lodbc -lm添加链接器选项
--no-as-needed
Fedora7的链接器默认启用--as-needed,可能忽略某些间接依赖。添加该选项强制链接所需库:gcc -o prog prog.c -Wl,--no-as-needed -lpthread -lodbcinst -lodbc -lm确认依赖开发包完整性
确保系统安装了匹配的glibc和pthread开发包:yum install glibc-devel.x86_64 pthread-devel.x86_64
内容的提问来源于stack exchange,提问作者Laurel
相关产品推荐
相关产品推荐

