无法在gcc版本4.1.2 20080704(Red Hat 4.1.2-48)上编译c程序
我该怎么办?
感谢。
答案 0 :(得分:1)
您可以做的一件事是提供更多信息:) 这里的典型示例是您错过了来自其他软件包的包含文件,可能在/ usr / lib / include或/ usr / local / lib / include中。无论哪种方式,编译器都不知道“mysql_options”的含义。
答案 1 :(得分:0)
未定义的符号通常是在最终链接阶段无法解析的函数或变量。
最常见的原因是无法将包含它们的目标文件或共享库添加到编译器/链接器选项。例如,如果共享库是libtest.so,则需要向gcc添加-ltest选项,gcc通常用于在许多系统上进行链接,而不是直接使用ld。
在许多其他情况下,链接器无法找到所述库,因为未正确设置库搜索路径(gcc中的-L选项)以允许链接器查找这些库。但是,在这种情况下,链接器将输出有关无法找到指定库的单独错误消息。
另一个不太常见的原因是使用带有条件部分的头文件,这些部分与实际的共享库不同步。例如,假设使用库中函数的unicode版本(如其头文件中所定义),而实际的共享库对象不支持unicode,因此不包括这些函数。
在您的情况下,mysql_options符号位于libmysqlclient和libmysqlclient_r库中。您应该检查导致错误的命令行,并查看是否有任何链接。
如果您需要更多帮助,您应该向我们提供所述命令行,确切的错误消息以及有关您要编译的内容的一些信息。