GCCについて part8
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん
2007/10/13(土) 00:07:39GNU本家のGCCページ
http://gcc.gnu.org/
Binutils - Collection of binary utilities ←これも必要だぞ。
http://www.gnu.org/directory/GNU/binutils.html
GNU Binutils
http://sources.redhat.com/binutils/
GCC online documentation
http://gcc.gnu.org/onlinedocs/
Installing GCC
http://gcc.gnu.org/install/
GCC Timeline
http://gcc.gnu.org/releases.html#timeline
Calendar
http://gcc.gnu.org/develop.html#timeline
前スレ
GCCについて part7
http://pc11.2ch.net/test/read.cgi/tech/1145357824/l50
0809デフォルトの名無しさん
2009/04/14(火) 15:51:50マルチうざい
0810デフォルトの名無しさん
2009/04/14(火) 20:06:04それなんてAda
0812デフォルトの名無しさん
2009/04/14(火) 22:31:31その程度も出来ないのかw
プログラミングの力じゃなくて高校生1〜2年程度の数学の力だろ。
その上マルチなのか。wwwwww
0813デフォルトの名無しさん
2009/04/15(水) 00:17:18いまさらだけど、
gcc -ffunction-sections -fdata-sections ...
ld --gc-sections ...
で未使用関数・変数の分は削れるのかな?
0814デフォルトの名無しさん
2009/04/15(水) 06:38:56平面の問題なら中学生じゃないかな。高校生でできなかったら恥ずかしすぎる。
0815デフォルトの名無しさん
2009/04/15(水) 06:46:540816デフォルトの名無しさん
2009/04/15(水) 15:56:100817デフォルトの名無しさん
2009/04/15(水) 17:28:13はやくおちんちんがむけるとイイネ!
0818デフォルトの名無しさん
2009/04/17(金) 00:27:350819デフォルトの名無しさん
2009/04/18(土) 11:10:56Cという動的ライブラリの関数をコールしてその中からAの関数をコールしようとすると
コールできる関数とUndefined symbolになる関数ができるんですけどどうしてですか?
0820819
2009/04/18(土) 12:15:33CでもUndefined symbolにならないようです
最適化関係のバグですかね…
ちなみに、↓です
gcc version 3.4.6 [FreeBSD] 20060305
0821デフォルトの名無しさん
2009/04/18(土) 12:57:10ポインタ渡してコールバックさせてるなら不具合っぽいけど、Bで呼び出しもポインタの取得もしていないならその関数をリンクしないのは最適化としては自然でしょ。
0822デフォルトの名無しさん
2009/04/18(土) 13:20:54動的ライブラリも独立したプログラムだからこれが自然なのかな
CにもAを静的リンクさせるとか無駄でやりたくないんですけど…
0823デフォルトの名無しさん
2009/04/18(土) 14:47:34(静的リンク|ダイナミックリンク)+(実行時ロード)での話なら
ロード時にシンボルの解決範囲がオプション指定できるからそれかも?
0824デフォルトの名無しさん
2009/04/18(土) 16:04:02A.a内にfunc()
B.out内にmain()
C.so内にhoge()
という関数があって、B.outがA.aを静的にリンクしている状態で、
B.outがC.soを実行時ロードしてhoge()をコールして、
hoge()からfunc()をコールしようとしています
0825デフォルトの名無しさん
2009/04/18(土) 16:55:060826デフォルトの名無しさん
2009/04/18(土) 19:00:41その設計は普通のモジュール構成だし。本体側が提供するAPIを
自由にコールできないなんて聞いたことない。なんだろ?
0827デフォルトの名無しさん
2009/04/18(土) 19:52:560828デフォルトの名無しさん
2009/04/18(土) 20:12:16本体側が(正しく)提供してないからだろう。
そのタイミングで名前をリンカが知っていることが保証されていないと。
0829819(=820=822=824)
2009/04/18(土) 21:00:21gcc -Wl,--export-dynamic
という形ですけど、それは指定してるんですよ
>>820で「Cからコールする前にBで先にコールしておくと」と
書きましたが、実際にはBでのコールは実行される必要はなく、B内で
使用しないダミーの関数を作って、その中に func() を書いておきさえすれば、
C.so内のhoge()からA.a内のfunc()をコールできます
0830sage
2009/04/18(土) 21:22:41A.aをリンクしたつもりでも、A.a内のfunc()はB.outにリンクされていませんでした
これはコンパイラはfunc()の使用を知るすべがないので、やむを得ないですね
0831デフォルトの名無しさん
2009/04/18(土) 21:27:25-Wl,--whole-archive libA.a -Wl,--no-whole-archive ... -ldl
で指定した静的ライブラリのオブジェクトをオブジェクト中シンボルを
実行ファイル側で使っているかどうかに関わらず無条件取り込みできるよ。
0833デフォルトの名無しさん
2009/04/18(土) 23:34:44>>819には実行環境が書いてないけどld.soでしょ。
ld.soのマニュアルも読んでおいた方がいいかと。
GOTやPLTについて。
0834デフォルトの名無しさん
2009/04/20(月) 18:46:23どうにも計算結果が微妙なんで調整してみたいんですが。
0835デフォルトの名無しさん
2009/04/20(月) 23:50:550836デフォルトの名無しさん
2009/04/21(火) 09:53:19情報THX。
色色試行錯誤した結果、今回は-f(no-)float-storeは関係なく、
-msse2 -mfpmath=sseでicc -pc64と(計算結果が)ほぼ一致しました。
うーん、やっぱりアセンブリ出力を比較しないとダメなんだろうか……
0837デフォルトの名無しさん
2009/04/23(木) 00:58:42http://www.gnu.org/software/gcc/gcc-4.4/
0838デフォルトの名無しさん
2009/04/23(木) 03:06:13http://lkml.org/lkml/2009/4/22/78
0839デフォルトの名無しさん
2009/04/23(木) 06:13:53ブラクラはんな死ね
0840デフォルトの名無しさん
2009/04/23(木) 07:11:250841デフォルトの名無しさん
2009/04/23(木) 17:00:100842デフォルトの名無しさん
2009/04/24(金) 00:06:490843デフォルトの名無しさん
2009/04/24(金) 00:13:200844デフォルトの名無しさん
2009/04/24(金) 00:14:430845デフォルトの名無しさん
2009/04/24(金) 01:40:020846デフォルトの名無しさん
2009/04/24(金) 10:32:000847デフォルトの名無しさん
2009/04/24(金) 17:44:35>性能が2割遅くなった
コンパイル速度?
それとも産物の動作速度?
0848デフォルトの名無しさん
2009/04/24(金) 23:42:53もちろんiccには負ける、というブログ記事は見た。
でも、今回のリリースは自動並列化フレームワークの仕込みが目玉でしょう。
まだgcc -ipoできる日は来るのかな?
0849デフォルトの名無しさん
2009/04/25(土) 00:37:00自動並列化は使い物にならないよおもちゃレベルでしかない
IntelのThredBuildingで並列化したほうが性能いいし
0850デフォルトの名無しさん
2009/04/25(土) 22:10:39intel構文から、AT&T構文の拡張インラインアセンブラ構文に
書き換えするサンプルが見つからなくて困っています。
.asmを.sに書き換えるサンプルはいくつか見つかったのですが・・・
Darwinのgccは-MASM=intelが使えない・・・orz。
0851デフォルトの名無しさん
2009/04/25(土) 23:34:23しってるけど土曜日だから教えないw
うひひひ
0852デフォルトの名無しさん
2009/04/25(土) 23:59:530853デフォルトの名無しさん
2009/04/26(日) 00:00:403.4.5
0854デフォルトの名無しさん
2009/04/26(日) 00:18:47ほー。
0855デフォルトの名無しさん
2009/04/26(日) 00:33:31Windows だと難しいポイントとかあるのかね。
むしろ要求される品質レベルの方が違うのかな?
0856デフォルトの名無しさん
2009/04/26(日) 01:07:38個人で4.3系列配ってるひとはいるにはいる
0857デフォルトの名無しさん
2009/04/26(日) 02:32:193系だって3.4.6にしないし。
0858デフォルトの名無しさん
2009/04/27(月) 01:11:320859デフォルトの名無しさん
2009/04/27(月) 08:00:40平日になりましたので回答を頂けると幸いです。
0860デフォルトの名無しさん
2009/04/27(月) 09:58:210861デフォルトの名無しさん
2009/04/27(月) 10:41:51構文の説明なんぞいくらでも出てくるし、
あとはGCC x86の●ーリング●ンベンションをだな
(ヒント:●には同じ文字が入る)
0862デフォルトの名無しさん
2009/04/27(月) 11:17:220863デフォルトの名無しさん
2009/04/27(月) 11:18:560864デフォルトの名無しさん
2009/04/27(月) 11:19:050865デフォルトの名無しさん
2009/04/27(月) 11:23:500866デフォルトの名無しさん
2009/04/27(月) 15:21:450867デフォルトの名無しさん
2009/04/29(水) 08:18:190868デフォルトの名無しさん
2009/04/29(水) 12:31:37gccの改悪版あれすげー遅いな
AMD何がしたいんだ?
0869デフォルトの名無しさん
2009/04/29(水) 20:44:120870デフォルトの名無しさん
2009/05/01(金) 09:51:02もう入ってる
0871デフォルトの名無しさん
2009/05/08(金) 20:09:38ビルドしてインストール(usr/local/)してみたんですが、
アンインストールしたいのですが、
/usr/local/には他にgccは入れていないのですが、
/usr/local/にあるgcc4.4入れた時にできたディレクトリを削除すればOKですか?
他に削除するところはありますか?
0872デフォルトの名無しさん
2009/05/08(金) 22:25:50ですが、
ですが、
0873デフォルトの名無しさん
2009/05/08(金) 22:34:58そうだよ。でも/usr/local配下のbin/ include/ info/ lib/ libexec/ man/ share/には全部関連するものが
入ってると思うよ。
0874デフォルトの名無しさん
2009/05/10(日) 18:41:18C言語の opaque の利用方法についてです。
-- hoge.c --
struct hoge{
int a;
double b;
} __hoge[] = {
{1,2.0},
...
};
--------------
-- hoge.h --
typedef struct hoge hoge;
extern struct hoge __hoge[];
------------
としてやりたいのですが、
上の __hoge[] が error: array type has incomplete element type
こんなことをいわれてしまい、うまくコンパイルできません。
シンボルさえ解決できれば問題なさそうなのですが、
うまく通す方法ご存知の方おしえていただけないでしょうか?
バージョン gcc4.0.1 です。 よろしくおねがいします。
0875デフォルトの名無しさん
2009/05/10(日) 18:51:38hogeの定義もヘッダに書け。
あとそれくらいCのスレで聞けばいい。
0876デフォルトの名無しさん
2009/05/10(日) 19:00:01Cのスレさがしたのですが、なかなか答えがきけそうなところが見つからなかったのでした。
ただ、スレ違いすぎる気がするので、別のところにクロスポストしてみます。
0877デフォルトの名無しさん
2009/05/10(日) 19:14:140878デフォルトの名無しさん
2009/05/10(日) 19:14:19Cygwin+GCCでどうしてもUTF-8を扱いたいので
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
int main(void){
setlocale(LC_ALL, "Japanese_Japan.932");
wchar_t str[]=L"あいうえお";
wprintf("%lc", str[0]);
return 0;
}
のようなコードを書きました。
”あ”と言う文字を表示したいのですが、
wchar.hをインクルードしてるにもかかわらず、wprintfやsetlocaleが無いとコンパイラに言われます。
何をインクルードすればいいのでしょうか?ググってもwprintfに必要なヘッダはwchar.hとしかかかれてませんでした。
ちなみに、GCCのバージョンは3.4.4です。
よろしくお願いします。
0879デフォルトの名無しさん
2009/05/10(日) 19:16:22だから、そういうことはできない。
(配列はポインタではない)
0880デフォルトの名無しさん
2009/05/10(日) 19:19:19>>878
コンパイラが、ヘッダファイルがみつからないので読み込めなかったとか
エラー吐いてないかね?
でなければ wprintf をヘッダファイルが入ってるディレクトリで grep してみれ。
それでもダメなら、なんか #define が必要とかかなぁ。
0881デフォルトの名無しさん
2009/05/10(日) 19:23:54ありがとございます。
>> 配列というのは中身がわからないと作れない。
自分の理解では、構造体の定義情報がないとサイズが計算できないためいくらがんばっても
(配列や1つのインスタンス)であっても計算できず IA32 or IA64 のような
アドレスポインタならばとりあえず参照くらいはできるはずだぜー
っとう感じなのかなと思います。
0882デフォルトの名無しさん
2009/05/10(日) 19:25:150883デフォルトの名無しさん
2009/05/10(日) 19:54:27#include <locale.h> も必要じゃね?
それからソースコード中のワイド文字列リテラルの文字コードを
どう解釈するかは処理系依存だったはず。
gcc の場合は -finput-charset オプションで指定できる。
出力する文字コードの指定は -fwide-exec-charset オプション。
やりたいことがよくわからんが、
「あ」という文字を UTF-8 で出力したいってことなのか?
0884デフォルトの名無しさん
2009/05/10(日) 20:09:27Cygwin 1.5 ならあきらめろ。wchar 系関数は無効にされてる。
Cygwin 1.7 では wchar 実装中だったからもう少し動くようになってるかもしれない。
>setlocale(LC_ALL, "Japanese_Japan.932");
これってどこかから引っ張ってきたコード?
どうせ設定するなら "ja_JP.UTF-8" じゃないの?
で、そもそも論だが UTF-8 使うのに wchar 系の関数が必要か?
入出力は UTF-8 で内部では wchar_t で持つつもりなの?
0885878
2009/05/10(日) 20:23:26Cygwin側の問題でしたか。
あ、localeに関してはlocale.hのインクルードで解決しました。
やりたい事は、1バイト単位ではなく、ユニコード単位で文字列操作を行って
結果を表示したいと言う事です。
なので、内部でcharで持ってしまうと都合が悪いのです。
0886デフォルトの名無しさん
2009/05/10(日) 20:33:22それはおそらくVCの書き方。
だから、たぶんMinGWでいける。
当然、Cygwinでも-mno-cygwinなら使えるのだと思う。
0887デフォルトの名無しさん
2009/05/10(日) 20:56:52それなら内部エンコーディングはUTF-32で保持する必要あるんじゃないの。
0888デフォルトの名無しさん
2009/05/10(日) 22:00:54Unicode だったら UTF-8 以外でもいいのか?
シーケンシャルな操作しかしないなら UTF-8 は扱いやすい符号だけど…。
「やりたいこと」ってのが >>878 から何も具体的になってない。
説明不足。
0889デフォルトの名無しさん
2009/05/10(日) 22:07:24って話なんだから十分だろ。何使おうがどう処理しようが知ったこっちゃねぇ
んで、その答えは
-mno-cygwinを付ける。
ただしGCC-4は対応してません。
0890デフォルトの名無しさん
2009/05/11(月) 03:48:24例えば
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include <locale.h>
int main(void){
char str[]="あいうえお";
wchar_t w_str[512];
setlocale(LC_ALL,"ja");
int len=mbstowcs(w_str,str,512);
wprintf(L"%s", &w_str[2]);
return 0;
}
このコードは普通なら、3番目の文字から表示する事を期待するが
実際には、
いうえお
と表示される。これでは何の為にワイド文字に変換したのかw
同じコードは、VC++だと正常に表示される。
悪い事は言わん。お前の知識だとハマるだけだから、素直に回避しとけ。
0891デフォルトの名無しさん
2009/05/11(月) 03:55:59ソ系ダメ文字も相変わらずだし
0892デフォルトの名無しさん
2009/05/11(月) 04:06:43それはオプション正しく設定してないだけだろ
0893デフォルトの名無しさん
2009/05/11(月) 07:48:21cygwinのライブラリがウンコなだけでgccのせいじゃない
0894デフォルトの名無しさん
2009/05/11(月) 16:49:14MLにfujiedaさんがCygwinのI18Nに手をつけるとか投げていたけど、
なしのつぶてだな…
0895デフォルトの名無しさん
2009/05/11(月) 17:37:050896デフォルトの名無しさん
2009/05/11(月) 19:33:31MinGW3.4.5のインストーラで入れた版はダメでした
手で一つ古いcc1.exeとcc1plus.exeを入れたらうまく行きました
ありがとうございました
0897デフォルトの名無しさん
2009/05/11(月) 22:43:130898デフォルトの名無しさん
2009/05/11(月) 23:14:35前のバージョンならリンクしてるからインストーラを使ったのなら
sourceforgeへ行って落とせ
ここが参考になる
http://seclan.dll.jp/dtdiary/2009/dt20090324.htm
0899デフォルトの名無しさん
2009/05/12(火) 00:27:03いや、俺はもう解決してるんだけど、
公式なものでなんでこんなことになってんのかな…と
0900デフォルトの名無しさん
2009/05/12(火) 00:29:520901デフォルトの名無しさん
2009/05/12(火) 00:48:53声出したり手出さないといけないんだろうな。
と思いつつ何もしていないけど。すまん。
0902デフォルトの名無しさん
2009/05/12(火) 15:21:550903デフォルトの名無しさん
2009/05/12(火) 15:42:32経緯とか理屈とかさっぱりわからんし、
英語の文書を追う気にもならん。
0904デフォルトの名無しさん
2009/05/12(火) 16:15:39Cの場合は、gccにはlibcが入ってなくて、
libcの実装はプラットフォーム毎に違うから、
gccの問題じゃないよ。スレ違い。
char str[]="あいうえお";
このmbcs部分のエンコードがおかしいってのなら
gccの問題に他ならないんだけど。
0905デフォルトの名無しさん
2009/05/16(土) 07:17:20この部分が解りません。
%ebxにはある8バイト整数の上位4バイトが入っているところで
sar $0x1f,%ebx
sar $0x1f,%ebx
と、右に31ビットシフトを二回やってます。 SARの定義によると、%ebxが
もし負であったら結果は%ebxが 0xffffffffになって31ビット目がキャリーに。
正であったら0x00000000になってやはり31ビット目がキャリーに。
これの意図もまだ解らないのですが、2番目のSARにどういう意味があるのか全く
検討が着きません。始まる段階で%ebxはすでに2つの値でしかあり得ないのに
なぜまた31ビットもシフトしてるのでしょうか?
0906デフォルトの名無しさん
2009/05/16(土) 10:26:280908デフォルトの名無しさん
2009/05/16(土) 11:34:50レス数が900を超えています。1000を超えると表示できなくなるよ。