0
我想指定將在GCC編譯我的C代碼的編譯器選項。由於代碼的部署方式,我需要從代碼中完成此操作。這是目前看起來成功指定優化標誌的代碼。如何指定-march =本地使用編譯指示(或其他方式)在GCC
#pragma GCC optimize ("-O3,-ffast-math")
typedef float v4sf __attribute__ ((vector_size (16)));
typedef union {
v4sf v;
float e[4];
} float4;
typedef struct {
float4 x;
float4 y;
} complex4;
static complex4 complex4_mul(complex4 a, complex4 b) {
return (complex4){a.x.v*b.x.v -a.y.v*b.y.v, a.y.v*b.x.v + a.x.v*b.y.v};
}
complex4 f4(complex4 x[], int n) {
v4sf one = {1,1,1,1};
complex4 p = {one,one};
for (int i = 0; i < n; i++) p = complex4_mul(p, x[i]);
return p;
}
不過,我也想指定
-march=native
。這可能是 從代碼內部?
我也嘗試#pragma GCC optimize ("-O3,-ffast-math, -march=native")
但-march=native
部分只是似乎被忽略。見https://godbolt.org/g/FjbRcV。
它不是忽視,是錯誤的。你想要存檔什麼? '-march'實際上是在你交叉編譯時使用的。本機是指機編譯器拱上 –
運行@ PeterJ_01我想GCC產生相同的代碼,我會得到我已經做了'gcc的-O3 -ffast-數學-march = native'。 – eleanora