1read 100read
2012年4月プログラム212: GCCについて part10 (194)
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▼
IS<インフィニット・ストラトス>総合 (568)
【Lisp】プログラミング言語 Clojure #2【JVM】 (430)
七行プログラミング part6 (364)
NullPointerExceptionを「ぬるぽ」と呼ぶスレ6 (307)
【SICP】計算機プログラムの構造と解釈 Part3 (332)
【マック】Macintoshプログラミング質問箱 (479)
GCCについて part10
1 :11/09/03 〜 最終レス :12/05/04 史上最強かもしれなかったツール、GCC(GNU Compiler Collection)について語るスレ。 GNU本家の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について part9 http://hibari.2ch.net/test/read.cgi/tech/1246059290/ 関連スレ 【最速へ】LowLevelVirtualMachine【LLVM】 http://hibari.2ch.net/test/read.cgi/tech/1211547655/
2 : ストラウストラップ本は、あれプログラミング初心者向けの本じゃないから注意な 中級者が現実的なプログラミングの方法を学ぶ為の本であって
3 : 初心者って何の? CやJavaは知ってるが、これからC++をやろうって言う人にはうってつけのような・・・
4 : 俺にはプログラミングの初心者って書いてあるように見えるが…?
5 : >本書はその原則を実際に展開しながら「プログラミングとはなにか」「どうやってプログラミングを学習するか」を >平易に解説してゆく。何度も挫折を繰り返した学習者や、原点に立ち戻り「プログラミング」を深めたい実務者など、 >すべての開発者必読の1冊である。 と、あるよ?
6 : >>2 プログラミングの初心者は現実的なプログラミングを学んじゃいけないの?
7 : まぁ あの本はストラウストラプ先生(長い)の ありがた〜い言葉を入門者のように素直に聞くというのが いいかと。 神の声のような感じでうっとりですよw でも int char double string if switch while for vector ってな 感じでポンポン出て来て、リズムがいいっすね。 ほんとにC++はツールとして選んだって感じです。
8 : 一冊くらいはびよーんすぽっすぽっの本も読んでみるか。
9 : 前スレ>>999 いや時代遅れで役に立たない本だ、とか言いたかったわけじゃなくて 単純に>>976 が勘違いしてそうだったので。
10 : 禿があれ書いた時は、ああもうC++0xが確定寸前でやることないから、 プログラミング入門でも書く気になったのかなと思った。 もちろんそれは気のせいだった。
11 : >>3-5 とんでもない誤解だよ ttp://d.hatena.ne.jp/eel3/20110813/1314198158
12 : >ただ「プログラミングを始めるための最もやさしい本ではない」訳で、 >何かしらの開発経験はあるけど色々と足りない部分を痛感しているような人なら本書で独習することも可能だろうが、 >それよりも経験値が不足している人やプログラミング未経験の人が独習用に使うのは避けたほうが無難だろう ふ〜ん。(゚σ ゚)ホジホジ
13 : まえがきからの抜粋に文句つけられても・・・ >本書はプログラミングを始めるための最もやさしい本ではないし、そのようなつもりで書いていない。 >著者が目指したのは、現実のプログラミングの基礎を最も簡単に学べる本である。 >現実のソフトウェアの多くがほんの数年前まで高度であると見なされていた技術に基づいていることを考えれば、実に意欲的な目標ではないか。 >基本的には、他の人が使用するためのプログラムを書き、それを責任を持って行い、 >それなりの品質を維持したいと考えていることが前提となる。 >つまり、プロとして恥ずかしくないレベルを目指しているものと想定する。 >そこで、本書では教えたり学んだりするのがやさしいものではなく、 >現実のプログラムに取り組むために必要なものがカバーされるように話題を選んだ。
14 : あえて入門書というカタチを取ったおかげで 言葉や想いが伝わりやすくなってる気がする。 でも その言葉は熱く優しく気高い。
15 : まあ独学でやるにはそれなりのプログラミング経験は必要ってこったな
16 : 趣味ならrubyなりnode.jsなり、もっと良い言語があるのにな
17 : 釣られませんよ
18 : unused but set variablesって4.6以降エラー扱いがデフォになってるみたいだけど、 これって弾かないといけないくらい有害なの? いまいちデメリットがよくわかんないんで誰かヒントくれ。
19 : 弾込めたら弾かないと
20 : 無駄な変数宣言しとるで って、だけじゃあ 違うかな
21 : その程度で警告じゃなくてエラー扱いはやりすぎだからなんか深い理由があるの? と>>18 は聞いてるようだが
22 : 引数の未使用でもエラー吐くの?
23 : 無能って教えてくれてるんじゃあ、コンパイラが
24 : バグのあらわれだったりすることはあるよね。
25 : -Wunused-parameter つけんと特に怒らんけどね、コンパイラ
26 : -O2 -Wall -Werrorあたりよくわからんまま適当につけて 怒られているとエスパーしてみる
27 : -Werror=unused-but-set-variable #: c-decl.c:1183 #, gcc-internal-format msgid "variable %qD set but not used" msgstr "変数 %qD が設定されましたが使用されていません"
28 : 質問です gcc4.6.1(MinGW)でRaw string literalで R[]で囲もうとするとコンパイルエラーになります R()で囲むとコンパイルが通るのですが、どちらが正しいのでしょうか?
29 : R"( )" で囲むのが正しいよ R"hoge( )hoge" とかで囲んでもいいけど R[ ] も R( ) もコンパイル通らない
30 : >>29 ありがとうございます 早くc++11の規格表が欲しくなりますね
31 : あ、しまった sageます
32 : FDISはもう落とせないからねえ
33 : はい FDISはいりません 正規のPDFを購入予定です
34 : そのうちANSI版が安く出るでしょ。(ISO版は高いけど)
35 : やっとリポに4.5.3来た 4.4.5 → 4.5.3 ビルドしてきます
36 : 共有ライブラリのリンクの方法に関する 正式なドキュメントってどこにあるんでしょう? GCC online documentation http://gcc.gnu.org/onlinedocs/ ここのどのバージョンでもいいですけど リンクオプションのページを見ても -l の説明にはスタティックライブラリの ことしか載ってないですよね? 今まで普通に -l で共有ライブラリのリンクも 指定して特に問題なく実行できていたのですが 一度ちゃんと仕様を確認しておこうと思ったら どこにもないのですが… それとも単純にスタティックの場合の記述を 共有の場合にも適用してしまっていいということでしょうか? ご存知の方いましたら教えてください
37 : >>36 共有ともスタティックとも書かれていないような。 ttp://gcc.gnu.org/onlinedocs/gcc-4.6.1/gcc/Link-Options.html#index-Libraries-968
38 : >>37 -l の説明の最後に ... with `lib' and `.a' and searches several directories. とあったので拡張子からしてスタティックのことだと思ったのですが そういうわけではないのでしょうか?
39 : man ldしな。gccはコンパイラやリンカをそこそこよろしいオプションで起動するドライバ。 例外投げる共有ライブラリを使う場合は-static-libgccは使わない方がいい。 本当に詳しく知りたいならbinutils側のドキュメントと現在の実装度、 使うオブジェクトファイル形式の仕様、OS側のライブラリ管理方式、 自分の使うgccのspecsファイルを見れば何したらどうなるか分かる。
40 : man ld はCentOS5で確認済みでしたが、共有ライブラリに関することは 載っていませんでした。(むしろスタティック限定とも取れる書き方) …が、ネットでいくつか検索してみたところ、例えば http://www.sra.co.jp/wingnut/ld/ld-ja_2.html では > -larchive > --library=archive > 共有ライブラリをサポートしているシステムでは, ld は, 拡張子が .a 以外のライブラリをも検索する. > 特に, ELF システムと SunOS では, ld はあるディレクトリでライブラリを検索する時, 拡張子が .a の > ものよりも先に拡張子が .so のものを 探す. 約束により, .so という拡張子は共有ライブラリを表す. という記述があり、一応スッキリしました。 (割と重要な情報だと思いますが、マニュアルに必ずしも記述されてないようですね) binutilsをはじめとするその他ドキュメントについても確認してみます。 どうもありがとうございました。
41 : GCCはmanpageは参考程度と思え、とどっかで読んだ記憶がある
42 : 今のbinutilsのmanなら-l namespecで同じ記述がある筈なんだけどなあ CentOSのパッケージの都合でもあるのか >>41 逆にさんざん探して無いと思ってた情報がmanに載ってる場合も
43 : gcc -Wl,--verbose ほげほげ
44 : >>40 > On systems which support shared libraries, ld may also search for > files other than libnamespec.a. Specifically, on ELF and SunOS > systems, ld will search a directory for a library called > libnamespec.so before searching for one called libnamespec.a. (By > convention, a ".so" extension indicates a shared library.) Note > that this behavior does not apply to :filename, which always > specifies a file called filename. manpageにこの記述がないbinutilsのバージョンは何?
45 : 説明 ld は複数のオブジェクトファイルや書庫 (archive) ファイルを結合し、それ らのデータをリロケートして、シンボルの参照をまとめる。新たな実行プロ グ ラ ムをコンパイルして作成する作業の最終ステップは、多くの場合 ld の呼び 出しとなる。 ld はリンカコマンド言語のファイルを受け付ける。このファイルでリンク処理 を明示的に、また完全に制御することができる。この man ページではコマンド 言語を説明していない。コマンド言語や GNU リンカのその他の内容に関する詳 細 は info の `ld' エントリか、マニュアルである ld: the GNU linker を参 照すること。 ld の本バージョンではオブジェクトファイル関連の作業に汎用の BFD ライ ブ ラ リを用いている。これによって ld では多くの異なるフォーマットのオブジ ェクトファイルを読み、書き、結合することができるようになっている ( 例え ば COFF や a.out)。異なるフォーマットをリンクして、あらゆる種類のオブジ ェクトファイルを作成できる。サポートされているフォーマットや関連する ア ーキ テ ク チ ャに 関しては ` objdump -i' を実行すればよい。詳細は obj- dump(1) を見よ。 GNU リンカは柔軟であるだけでなく、診断 (diagnostic) メッセージも他の リ ン カより詳しい。多くのリンカはエラーが生じるとすぐに動作を停止してしま うが、 ld は可能な限り処理を続け、他のエラーに関しても知らせようとす る ( あるいはエラーにもかかわらず出力ファイルを作成してしまうことさえある) 。 GNU リンカ ld は多くの状況をカバーするように作成されている。また他の リ ン カとできる限り互換性を保つようにしてある。したがって ld の振る舞いは 、コマンドラインや環境変数によって細かく制御できるようになっている。
46 : Merging In The GNU D Language Compiler To GCC http://www.phoronix.com/scan.php?page=news_item&px=OTk2NA D言語、いらっしゃい
47 : objdumpでx86-64のバイナリモードで逆アセンブルしたいんだけど上手くいきません $ /usr/local/bin/objdump -D -m x86-64 -b binary a.exe a.exe: file format binary /usr/local/bin/objdump: can't use supplied machine x86-64 -m i8086 -m i386 では上手くいきますが-m x86-64は逆アセンブルしてくれません なんででしょうか? obudump -d a.exeとすれば普通にx86-64を逆アセンブルしてくれます
48 : -m i386:x86-64 -b binary ... これで上手くいきました・・・すいませんでした
49 : 4.6.2
50 : Binutils 2.22 released
51 : すいません リンカ(ld)のオプション-Rについて教えてください マニュアルには「シンボル名とそのアドレスを filename から読み込む.」 とありますが、 これはライブラリのあるフォルダを指定しているということでしょうか? とすると、gccの-Lや-lはなんのために有るのでしょうか?
52 : -l LIBNAME, --library LIBNAME Search for library LIBNAME -L DIRECTORY, --library-path DIRECTORY Add DIRECTORY to library search path -R FILE, --just-symbols FILE Just link symbols (if directory, same as --rpath) -rpath PATH Set runtime shared library search path
53 : >>52 ん? よくわからないです。 例えば cc -L/usr/pkgsrc/bootstrap/work/wrk/pkgtools/pkg_install/work/libarchive/.libs -L/usr/pkgsrc/bootstrap/work/wrk/pkgtools/pkg_install/work/libfetch -L/usr/pkgsrc/bootstrap/work/wrk/pkgtools/pkg_install/work/libnbcompat -Wl,-R/usr/pkg/lib -L../lib -o pkg_add main.o perform.o -linstall -lfetch -larchive -lbz2 -lz -lnbcompat -lnbcompat を実行すると、 ../lib/libinstall.a(parse-config.o): In function `pkg_install_config': parse-config.o(.text+0x3f6): undefined reference to `fetchConnectionCacheInit' と言うエラーが出ます。 原因は、 -R/usr/pkg/libのところで、/usr/pkg/libというディレクトリが存在していないためだと思われるのですが、 -Wl,-R/usr/pkgsrc/bootstrap/work/wrk/pkgtools/pkg_install/work/libarchive/.libs -Wl,-R/usr/pkgsrc/bootstrap/work/wrk/pkgtools/pkg_install/work/libfetch -Wl,-R//usr/pkgsrc/bootstrap/work/wrk/pkgtools/pkg_install/work/libnbcompat -Wl,-R../lib と追記した所、 cc:-R/usr/pkgsrc/bootstrap/work/wrk/pkgtools/pkg_install/work/libarchive/.libs linker input files unused sinece linking not done と出て、失敗してしまいました。 解決策は、/usr/pkg/libを作ってそこにlib**をコピーすれば良いかなとも思ったのですが、 これで良いでしょうか?
54 : >>53 >よくわからないです。 ド素人が何をしてるのか、わかる人がいるとは思えんけど --rpathってのは、暗黙にリンクされるlibファイルの場所を指定するんだけど (俺もよくわかってないので雰囲気でわかって頂戴) -Lはlibのある場所を指定するところ libhoge.aをlinkしたいとき、フルパスで指定すると ほげほげ/libhoga.a と書くところを -Lほげほげ -lhoge って、書けるっていうだけ libの依存関係によっては、書く順番によってはエラーになることがある 実績のあるtar玉から configure,makeして何やってるか、見て見るところから始めたら 言葉で覚えるより出来合いのもの見て覚えるほうを個人的にオススメする
55 : すいません。教えてください。 BSD/OSにてpkgsrcをコンパイルしています。 gccのバージョンは Using builtin specs. gcc version 2.95.3 20010315 (release) です。 何度か/usr/pkgsrc/bootstrap/bootstrapを行っていて、 失敗するごとに、ソースの修正→/usr/pkgsrc/bootstrap/cleanup→/var/dbの削除を行って 再度/usr/pkgsrc/bootstrap/bootstrapを行うという繰り返しで進んでいます。 /usr/pkgsrc/bootstrap/work/wrk/pkgtools/pkg_install/work/pkg_install-20110805/addというディレクトリで cc -L/usr/pkgsrc/bootstrap/work/wrk/pkgtools/pkg_install/work/libarchive/.libs -L/usr/pkgsrc/bootstrap/work/wrk/pkgtools/pkg_install/work/libfetch -L/usr/pkgs rc/bootstrap/work/wrk/pkgtools/pkg_install/work/libnbcompat -Wl,-R/usr/pkg/lib -L../lib -o pkg_add main.o perform.o -linstall -lfetch -larchive -lbz2 -lz -lnb compat -lnbcompat ../lib/libinstall.a(parse-config.o): In function `pkg_install_config': parse-config.o(.text+0x3f6): undefined reference to `fetchConnectionCacheInit' ../lib/libinstall.a(pkg_io.o): In function `fetch_archive_open': pkg_io.o(.text+0x19): undefined reference to `fetchXGet' というエラーが発生しました。
56 : エラーメッセージの内容が理解できないの としか、いえんな
57 : 何カ所でマルチポストしてるんだよこいつ
58 : BSDIってまだサポートされてるのとかgcc-2.95とかそれでもマルチとか驚愕
59 : autotoolsで作ってる共有ライブラリを fprofile-generate、fprofile-useを使って 最適化する方法の詳細な記事を書いてください。
60 : ?ttp://d.hatena.ne.jp/pyopyopyo/20060311
61 : 私は高校2年の女子です。 C言語の勉強をしています。 次のようなプログラムを書きました。 #include <stdio.h> #include <curses.h> int main() { int x; getch("%u", x); printf("%\n", x); return 0; } コンパイルエラーが error: macro "getch" passed 2 arguments, but takes just 0 と、出ました。 /usr/include以下にcurses.hがあることは確認済みです。 原因と対策を教えてください。
62 : error: macro "getch" passed 2 arguments, but takes just 0
63 : エラーメッセージを読め。読み方がわからなければ先生に聞け。 getch()に引数は不要。他の関数と間違えてる?
64 : エラーメッセージ、本当は error: の前に "なんとか.c:6:14 " みたいなのがあるはずだが。 それに本当にcursesでプログラムを書きたいのかと。 もしこれが真面目な質問なら、C言語の質問をするようなスレで、どんなプログラムを 作りたいのか説明して質問した方がいいと思う。 本当にcursesを使うならUNIX系の人じゃないと知らないかもしれんけど。
65 : 初心者ですみません Cygwin で gcc を使ってます assert() を使用すると undefined reference to `_assert' エラーが出て困ってます どなたかご教授頂けると幸いです
66 : #include <assert.h>してある?
67 : >>66 ビンゴでした(;^ω^)
68 : gccというかautotoolsなのですが ./configure --build=x86_64-w64-mingw32 と毎回指定するのが面倒なので、環境変数で指定できないでしょうか?
69 : alias conf='./configure --build=x86_64-w64-mingw32' とでもしとけばいいんじゃね?
70 : config.niceを拾っておいて2回目以降はそれ使わね?
71 : >>70 config.niceって初めて知った。 ググるとPHPやApacheで使われているもののように見えるけど、よくわからん。
72 : >>70 head config.log してたわ〜と思ったけどそんなファイルできないぞ どうもautoconfの機能ではなく、configure.acに自分で処理書いて生成してるっぽいが
73 : SandyBridgeでg++ -march=native -mtune=native で作ったバイナリって Core2とかじゃ動かないみたいなんだけど、どのオプションでどれで動くかって 表か何かない?
74 : >>73 nativeだとAVX(-mavx)が入るからだろ -march=core2にしたらいいよ オプションはこれででる ttp://d.hatena.ne.jp/ktomoya/20100510/1273510042
75 : >>74 おぉ、サンクス。 ちなみに、MinGW/g++.exe (GCC) 4.6.1でこんなんでた。 -march=corei7-avx -mcx16 -msahf -mno-movbe -maes -mpclmul -mpopcnt -mno-abm -mno-lwp -mno-fma -mno-fma4 -mno-xop -mno-bmi -mno-tbm -mavx -msse4.2 -msse4.1 --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=8192 -mtune=corei7-avx
76 : >>75 -mavx -msse4.2 -msse4.1 -maes -mpclmul -mpopcnt ... などがCPUごとに実装状況が異なる命令を使うってオプションだから SSE4.2やAVX、POPCNTなど最近できた命令に対応していないプロセッサだと動かない -march=nativeはコンパイルしたマシンのプロセッサなどからこういうオプションを勝手に付けてくれるものだから 対応表とか作るとCPUのカタログになってしまうので コンパイル済みのバイナリを別のマシンで実行したいならmarchやmtuneは指定しないか 対象が分かっているならその中で一番機能が少ないプロセッサに合わせて設定したほうがいいかと
77 : 普段Pythonを使っているんだけど、gcc on LinuxでCで何かの分野の処理をやるとしたら何の分野がいいかな? コーディングがマゾい奴はやりたくない。うひょー、コーディング楽しいって感じの週末にしたい。
78 : フィボナッチ数でも計算してろ
79 : wxPython と wxWidgets のバインディングが出来るツールをおながいしまつ
80 : windows7にしたらResource temporarily unavailableエラーが頻出するようになったんだけど どういうことこれ
81 : Cygwin使っているならCygwin固有の問題
82 : 問題だね(´・ω・`)
83 : 問題と思うから問題になる 問題と思わなければ問題ない
84 : >>81 win7からメモリ管理の方式が変わったらしいし たぶんメモリアクセスのコンフリクトだと思うんだけど 直し方がなあ コンパイルするたびにがちゃがちゃとエラーで止まるのが非常にうざい
85 : 具体的に 何やったら、こうなった って、かいてほしいな
86 : Cygwin + MinGW + GCC 相談室 Part 6 http://toro.2ch.net/test/read.cgi/tech/1304609116/ というのがある。
87 : 4.6.1の情報はドコで手に入りますか?
88 : tar玉に入ってるだろ
89 : 最適化しても助長なコードを吐くことがあるのを見つけちゃったよ
90 : んではそのケース用peephole optimizationを.mdに追加してくれ
91 : え、秘密にしてちゃ駄目かな?
92 : 助長してくれるならいいことじゃないか
93 : 転送先に書いて、転送先から同じレジスタに書き戻すことがある で、わかりますか?
94 : ターゲット書かないのはターゲット非依存ってことなのか、今日日x86に決まってんだろうがってことなのか
95 : 複数archで確認してるよ、peephole2使って
96 : 以下のようなコードでコンパイルは通るのですが 実行した時の表示が 1 1 のようになってしまいます。 1 2 になるつもりで書いているのですが 変数の受け渡しはどうすればいいのでしょうか? (円記号のところは本当はバックスラッシュになっています) #include <stdio.h> int test(a) { a = a + 1; return a; } int main() { int a; a = 1; printf("%d\n",a); test(a); printf("%d\n",a); return 0; }
97 : a=test(a);
98 : #include <stdio.h> void test(int *a) { *a += 1; } int main() { int a = 1; printf("%d\n",a); test(&a); printf("%d\n",a); return 0; }
99 : Commit: RX: Add return pattern ttp://gcc.gnu.org/ml/gcc-patches/2012-01/msg00627.html gcc/function.cの HAVE_return HAVE_simple_return の場合分けが悪いだけなのにね ここに書いても無駄だと思うけど、なんとなく
100read 1read 1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▲
パーサーとか構文解析とかその他もろもろ (110)
パーサーとか構文解析とかその他もろもろ (110)
datファイルを共有するP2Pソフト o2on 17dat (310)
IDにC、C++、VB、etc...が出たら神!!! (161)
【QBASIC互換!?】FreeBasic【GPL】 (497)
C言語は関数ができなくても、理解可能か? (169)
--log9.info------------------
「Starry☆Sky」 アニメ化 (325)
【ガイナックス】 Panty & Stocking (324)
【BLOOD新シリーズ】 BLOOD-C (898)
Angel Beats!(エンジェルビーツ) Track13 (317)
★アニメ新作情報板 自治集会所★ 03 (145)
咎狗の血 3 (875)
Rio スロットNo.1 (394)
一騎当千4期放送決定 (119)
ストライクウィッチーズ第二次作戦発動 (275)
もしドラ (624)
星野リリィ「おとめ妖怪ざくろ」 (448)
GIANT KILLING 第1節 (678)
総合質問スレッド (236)
カードファイト!! ヴァンガード カード1枚目 (141)
「ヘタリア Axis Powers」3期制作決定! (532)
【中村健治】ノイタミナ『C』【オリジナル最新作】 (306)
--log55.com------------------
【CBC】〜ともだちラジオ〜本音でゴメン!! 1【宮地佑紀生 復帰】
安住紳一郎の日曜天国 Part 46【アンチ禁止】
オードリーのオールナイトニッポン part103
【AM1242/FM93】土屋礼央 レオなるど【JOLF】part4
火曜JUNK 爆笑問題カーボーイ part250
Creepy NutsのオールナイトニッポンZERO Part2
NHK-FM総合スレッド 第13部
【FM802・@FM】DJ西田新スレ3.1【OSAKAN・FREAKS】