【发布时间】:2023-04-07 00:19:01
【问题描述】:
EDIT2:
所以这里是一个程序示例:
#include <stdio.h>
#include <ctype.h>
int main ()
{
int i=0;
char str[]="Test String.\n";
char c;
while (str[i])
{
c=str[i];
putchar (toupper(c));
i++;
}
return 0;
}
1) 铿锵声:
clang++ -std=c++0x -stdlib=libc++ -lc++ main.cc -o main
编译得很好。
2) g++-mp-4.8 -std=c++11 main.cc -o main 给出:
Undefined symbols for architecture x86_64:
"toupper(int)", referenced from:
_main in ccWjHauc.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
3) g++-mp-4.8 main.cc -o main 编译!
你知道设置有什么问题吗?
===========
有人可以帮助了解 Gcc/macports/os 10.9 中的变化吗?
我曾经有一个在 os 10.8 中工作的第三方库的编译脚本。 最近我从 macports 更新到新的 osx (10.9) 和 gcc 4.7 停止链接。特别是我有:
Undefined symbols for architecture x86_64:
"isspace(int)", referenced from:
这个问题与here 提到的istype 非常相似。
但是,isspace 似乎不在 libgcc++.dylib 中。
有什么想法可以尝试吗?
编辑1:
确实,4.8 修复了 isspace 的问题,但另一个浮出水面 - toupper:
Undefined symbols for architecture x86_64:
"toupper(int)", referenced from: ...
这是怎么回事?!。是否与新的 Xcode (5.0) 有关?
【问题讨论】:
-
您是否包含了
标头? -
是的,问题仍然存在。
-
顺便说一句,据我了解,与链接错误相反,没有标头会导致编译错误
-
我在相同的环境中遇到了同样的问题(来自 OS X 10.9 上 macports 的 gcc4.7)。同时它使用 clang 或 gcc 4.8 编译没有错误。
-
我的设置是来自 Homebrew 的 OS X 10.9、Xcode 5.0.1、gcc-4.9(快照 20131027),我还得到了一个未定义的 topper() 符号 ...
标签: c++ macos gcc xcode5 macports