s******s 发帖数: 505 | 1 How to make gcc output ia32 assembly on an x86-64 system? Thanks. |
|
|
|
|
|
S*A 发帖数: 7142 | 6 front end is just C parsing and turn into internal IR.
The parsing itself is pretty complicate but the rules are actually
not very hard to understand.
The back end is where the interesting stuff happening.
If you just want to study how real compiler works. LLVM
is a much better start. The project is much cleaner compare
to gcc. |
|
d****i 发帖数: 4809 | 7 在Windows机上装了一个Cygwin,附带装了GCC,但是一看版本才3.4.4,难道现在
Cygwin已经没有人在actively的更新维护了吗? |
|
d****i 发帖数: 4809 | 8 Do you mean you can obtain GCC 4.3.4 from Cygwin install? I checked my
packages from Cygwin install file but it is only 3.4.4. |
|
p**v 发帖数: 853 | 9 you can download gcc the latest source file and compile yourself.
usually, you only need to run ./configure; make; make install
if you don't run into any problem. and most of the times, you cannot
compile because some utilities are not available in your system.
good luck |
|
C*********m 发帖数: 213 | 10 cygwin 1.7用户表示 gcc版本是 4.5.3 你用的是cygwin 1.5? |
|
d****i 发帖数: 4809 | 11 Have you created a soft link to your new gcc? |
|
x******a 发帖数: 6336 | 12 rhel (5.0? not sure)上现有的gcc是4.1.2,
我想安装gcc4.7或者4.8在自己的home directory下。
没有管理员,也没有网络,请问可不可用easybuild还是要手动build?
多谢 |
|
r*****e 发帖数: 792 | 13 this is what I usually do:
./configure --prefix="your dir" --exec_prefix="your dir"
make
make install
of course you need to enable/disable other options
never used easybuild myself.
finally point gcc to this newly build path. |
|
m**k 发帖数: 290 | 14 如果不熟悉还是不要折腾gcc 吧。远没那么简单。 |
|
r*****e 发帖数: 792 | 15 我一般都是先放狗,没结果就看看code怎么能hack一下,再不行就放弃。不过gcc
我还从来没有安装失败过,你看看是不是
什么lib没装。 |
|
|
b***i 发帖数: 3043 | 17 Zynq的ARM,PetaLinux,是否可以安装gcc,这样,以后装程序不用cross compile? |
|
a9 发帖数: 21638 | 18 当然可以啊。关键你得先编译gcc吧,还要编译需要的类库吧。
比交叉编译麻烦多了,想想就头疼。
gui |
|
l*l 发帖数: 26 | 19 Seems no way to stop gcc compiling.
In Microsoft C, #error stop the compiler immediately. |
|
|
q*****g 发帖数: 1568 | 21
我后来就这么改了。VC才通过编译。
这个我怀疑标准C都不行。
gcc肯定可以。 |
|
n********r 发帖数: 65 | 22 gcc里面不用
using namespace std;
就可以用abs ,norm
为什么? |
|
d******g 发帖数: 14 | 23 偶的code里需要有一些数学表达式,长度大概5-20K字节不等,因为
都是Maple自动生成的,写code的时候只要copy paste,不用具体的
去看这个表达式,所以想把每一个表达式都以单行的形式放在code
里面(关掉自动wrapping),这样不用每次都page up/down好几次才能
看到下一行code,不过好像在哪里看到过说C++的compiler对单行的长度有
限制,不知道哪里能找到GCC对单行长度的具体限制? |
|
c*****m 发帖数: 16 | 24 在代码里去获取编译参数好像绕弯子了。。。
如果真的需要实现这种机制,可以在代码里用 #ifdef DEBUG 去printf或者什么的,单
独写个.h放 #define DEBUG
然后在makefile里写判断,比如在带-g的时候,include上debug.h,-Wall的时候,
warn.h,甚至还可以弄个default.h等等这样
反正,在makefile里做这个比较合适,甚至偷懒的话可以写个脚本去grep -v \/\/
debug > xxx.c然后再gcc -g,不也挺方便的,无非就是输出调试信息后面记得加个//
debug就是了 |
|
|
y****e 发帖数: 23939 | 26 In file included from /usr/include/math.h:70,
from /usr/lib/gcc/i386-redhat-linux/3.4.4/../../../../
include/c++/3.4.4/cmath:52,
from /home/g/G/source/MathTools/Vector3DTemplate.h:5,
from /home/g/G/source/MathTools/Vector3D.h:4,
from /home/g/G/source/MathTools/DataStructures.h:4,
from /home/g/G/source/MathTools/Combinatorics.h:4,
from /home/g/G/source/MathTools/MathTools.cpp:8:
/usr/include/bits |
|
s********1 发帖数: 581 | 27 gcc 编译的时候要包括 header source file 吗?
main.c 的程序中引用了sub.h 和 sub.c 中定义的function pphh(),
***************************************************************
//File: main.c
#include
#include "sub.h"
void main()
{
pphh();
}
*************************************************
//File: sub.h
#ifndef _sub_h
#define _sub_h
void pphh();
#endif
************************************************
//File: sub.c
#include
#include "sub.h"
void pphh()
{
printf("pphh\n");
}
************************ |
|
m*****e 发帖数: 4193 | 28 I think it's the "__cold" attribute that causes your problem. Maybe it's
something to do with your gcc/binutils version. |
|
k***n 发帖数: 20 | 29 class A {
private:
...
public:
A();
A(const char x, const char y);
A(const string& z);
...
}
int main () {
A aa;
const string str("AT");
aa(str);
return 0;
}
gcc编译提示:
no match for call to `(A) (const std::string&)'
我知道这个错误可能很低级,不吝求教。 |
|
H******M 发帖数: 133 | 30 用gcc -O0 和 -O3 编译的程序运行结果差别很大, -O3编译的结果更正确。我应该找
哪些方面的问
题呢?有哪些工具可以用呢? |
|
|
a****y 发帖数: 86 | 32 一个非常简单的程序测试.
在D盘, test.c
#include
int main()
{
printf("hello!\n");
return 0;
}
用mingw编译.cmd命令行
c:\MinGW\bin\gcc d:\test.c -o d:\test.exe
没有输出结果.一片空白.但是如果我去点test.exe文件,黑框只闪一下就自动关闭了.但
是如果仔细看
会发现黑框里面第一行有我要的输出结果.
不知道为什么. 请教大家.谢谢! |
|
r*********r 发帖数: 3195 | 33 use macports, it has up to gcc 4.5 beta |
|
d****p 发帖数: 685 | 34 Thanks.
Looks like it is difficult to upgrade GCC directly on OS X after googling a
bit. |
|
t****t 发帖数: 6806 | 35 我怎么觉得一般linux上没什么麻烦的, 就算distri不提供升级包, 你也可以自己下一
个gcc来编译安装到/usr/local. 我干过好多次了, gcc3->gcc4都干过, 何况这个只是4
.2->4.3.
osx我就没试过. |
|
r*********r 发帖数: 3195 | 36 linux 上 gcc 3.2 之后 ABI 基本没变过, 当然比较容易了. |
|
|
|
k*******d 发帖数: 1340 | 39 gcc不会加载STL,我想如果你指明STL的路径应该也还是可以的吧 |
|
b******n 发帖数: 592 | 40
gcc can compile anything. it is not c compiler, it is a collection of compil
er. it will call g++ to compile program if you have the correct flags and ex
tensions.. |
|
r*****z 发帖数: 906 | 41 自动链接libstdc++是最容易发现的差别,但是并非全部,比如,
二者打开的宏也是有差别的
总之,应该坚持用g++对付C++代码,而用gcc只对付C代码
etc |
|
b**a 发帖数: 1375 | 42 下面这个function在visual studio 2010下没问题
template
typename T::value_type reduce(const T& t, Fn f)
{
T::value_type result = *t.begin();
T::const_iterator it=t.begin();
for (++it; it!=t.end(); ++it)
result = f(result, *it);
return result;
}
调用的话比如:
vectorv;
v.push_back(1); v.push_back(2); v.push_back(3);
cout << reduce(v, plus())<
但是在linux的gcc(4.1 -> 4.6)下出现好几个类似
error: need ‘typename’ before ‘T:: value_type’ becau... 阅读全帖 |
|
s****n 发帖数: 700 | 43 我有一个程序, 就是用了一些math function. 我用gcc编译的时候试图优化一下。
-o 01 和 -o 02的输出结果是一样的, 但是-o 03的结果就完全不一样。 不知道这个
是什么原因呢。
谢谢 |
|
t****t 发帖数: 6806 | 44 我不是专业搞数值计算的, 但是O3理论上应该结果跟O2一模一样. 至少gcc是这样. 数
学的sse和x87确实结果会不一样, 但那是-fpmath=sse和-fpmath=x87的结果. -ffast-
math会使用不合标准的数学计算, 但是O3并不会激活这个开关.
至于O3出错, 99%是自己写得不对. 写数值计算的人往往不太注意C/C++的规则, 也很正
常. |
|
|
t****t 发帖数: 6806 | 46 this has nothing to do with ceil; it's intel's 64bit vs 80bit math. on
modern cpu and 64bit gcc, all math is done in sse and this should not be a
problem.
了。 |
|
|
|
d****n 发帖数: 1637 | 49 this is right answer.
#test.c
#define MIN(X,Y) ((X) < (Y) ? (X) : (Y))
int main(){
int num=MIN(10,15);
return 0;
}
#gcc -E test.c
# 1 "test.c"
# 1 ""
# 1 ""
# 1 "test.c"
int main(){
int num=((10) < (15) ? (10) : (15));
return 0;
} |
|
j*a 发帖数: 14423 | 50 去查查gcc-4.6的release notes或者changelog什么的,一直往回查到4.4 |
|