Den*_*nis 8 c++ macos gcc macports xcode5
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;
}
Run Code Online (Sandbox Code Playgroud)
1)clang:
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
Run Code Online (Sandbox Code Playgroud)
3)g++-mp-4.8 main.cc -o main编译!
任何想法设置有什么问题?
==========
有人可以帮助理解Gcc/macports/os 10.9中的变化吗?
我以前在os 10.8中有一个第三方库的编译脚本.最近我更新到新的osx(10.9)和macports的gcc 4.7停止链接.特别是我有:
Undefined symbols for architecture x86_64:
"isspace(int)", referenced from:
Run Code Online (Sandbox Code Playgroud)
这个问题是非常相似提到的在这里进行istype.但是它似乎isspace并不存在于libgcc ++.dylib中.
任何想法尝试什么?
EDIT1:
确实,4.8解决了问题isspace,但另一个浮出水面 - toupper:
Undefined symbols for architecture x86_64:
"toupper(int)", referenced from: ...
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?!.它与新的Xcode(5.0)有关吗?
aar*_*gon 10
http://trac.macports.org/ticket/41033上有一个补丁 它解决了我的问题.您只需要在/usr/include/sys/cdefs.h中修补该文件并替换
#elif defined(__GNUC__) && defined(__GNUC_STDC_INLINE__)
Run Code Online (Sandbox Code Playgroud)
通过
#elif defined(__GNUC__) && defined(__GNUC_STDC_INLINE__) && !defined(__cplusplus)
Run Code Online (Sandbox Code Playgroud)
祝好运.
| 归档时间: |
|
| 查看次数: |
2227 次 |
| 最近记录: |