Add new...Clone CompilerExecutor From ThisOpt RemarksStack UsagePreprocessorASTLLVM IROpt PipelineDeviceRust MIRRust HIRRust Macro ExpansionGHC CoreGHC STGGHC CmmGCC Tree/RTLGNAT Debug TreeGNAT Debug Expanded CodeControl Flow Graph
最近の gcc だとシンボル解決がうまくいかないといかないことがあったので、ちょっと調べました。 次のような 3つのソースファイルがあったとして、ダイナミックリンクで作ってみましょう。 `main.c` int foo(void); int main(void) { return foo() + 1; } `foo.c` int bar(void); int foo(void) { return bar() + 1; } `bar.c` int bar(void) { return 0; } shared object を作るのに必要なのは、コンパイル時に `-fPIC` オプションをつけることと、リンク時に `-shared` オプションをつけることの 2点です。 $ gcc -fPIC -c -o bar.o bar.c $ gcc -shared -o libbar.so bar.o
Linuxで共有ライブラリ(*.so)を作るようになったのでちょっと勉強してみた。今までは使うだけだったので、以下のようなことは知っていた。作るときはgccの-sharedオプションを使う。使うときはgccの"-lライブラリ名"でリンクするライブラリを指定する。リンク時のライブラリ探索パスは-Lオプションで指定する。実行時のライブラリ探索パスは/etc/ld.so.confに書いてあるディレクトリ。環境変数LD_LIBRARY_PATHでも指定可能。ライブラリを作るときは、.cから.oを作るときに-fPICをつけるといいらしい。新しくライブラリを入れたときはldconfigするといいらしい。逆に今まであまり知らなかったこと。ほとんどのライブラリはlibhoge.so, libhoge.so.1, libhoge.so.1.1のように3つくらいのファイルがあり、libhoge.soやlibh
今時のgcc に驚いた。kernel/VM advent cal. 2012/ DEC/07 | たけおか ぼちぼち日記 kernelVM advent calendar 2012/ DEC/07 今時のgcc に驚いた話。 (kernelともVMとも関係なくて、スマソ) -- a.c main() { foo(); } foo() { printf("FOO"); bar(); } bar() { printf("BAR"); foo(); } -- というソースを書く。 foo()とbar()は、お互いに呼びあい無限ループを描く。 % cc -S -O0 a.c で、出たオブジェクトは -- a.s -O0 (略) main: .LFB0: (略) movl $0, %eax call foo (略) ret .cfi_endproc .LFE0: (略) .LC0: .string
未踏プロジェクトの支援を受けて開発していた、C/C++のための開発援助ツールGCCSenseをリリースしました。配布物やドキュメントは次のURLから入手できます。 http://cx4a.org/software/gccsense/index.ja.html 開発援助ツールと銘打っていますが、現状利用できる機能はコード補完と自動構文チェック(Emacsのみ)だけです。将来的には関数ヘルプ機能や型表示機能を実装する予定です。 GCCSenseはコード補完などの機能を搭載した独自のGCCを利用しているため、インストールがかなり面倒です。ドキュメントによってある程度カバーしたつもりですが、環境によってまちまちなのでインストール時に問題が出てくるのは必至だと思います。その際は私に連絡してください。 また、独自GCCを利用している関係上、現状ではWindowsでの利用はできません。自由なソフトウェア
gcc 4.2以降、-march=nativeのオプションを与えると、CPUに合わせた最適化オプションが得られるようになった(IA-32/x86-64のみ)が、複数種のCPUが混在しているdistcc環境では利用できない。 なので、-march=nativeが生成している最適化オプションを調べてみた。手抜きスクリプトはこんな感じ。 #!/bin/sh CC="gcc" OPT="-march=native" NATIVE=$(echo | ${CC} -E -v ${OPT} - 2>&1 | grep cc1) NOARCH=$(echo | ${CC} -E -v - 2>&1 | grep cc1) for native in ${NATIVE} ; do FOUND=0 for noarch in ${NOARCH} ; do if [ "${native}" = "${noarc
[Contents] [Back] [Prev] [Up] [Next] [Forward] gcov: テスト・カバレッジ・プログラム gcovは、 GNU CCと組み合わせることによって、 プログラムのコード・カバレッジをテストすることができるツールです。 この章では、 gcovのバージョン1.5について説明します。 gcovの紹介 gcovは、 テスト・カバレッジ・プログラムです。 GNU CCとともに使用してプログラムの分析を行えば、 より効率的、 かつ、 より高速に動作するコードを生成することができます。 gcovは、 コードのどの部分に最適化を適用するのが最も効果的であるかを発見するのを支援してくれる、 プロファイリング・ツールとして使用することができます。 また、 gcovを、 別のプロファイリング・ツールであるgprofとともに使用して、 コードのどの部
6 Extensions to the C Language Family ¶ GNU C provides several language features not found in ISO standard C. (The -pedantic option directs GCC to print a warning message if any of these features is used.) To test for the availability of these features in conditional compilation, check for a predefined macro __GNUC__, which is always defined under GCC. These extensions are available in C and Objec
gcc(Gnu C Compiler)の拡張文法 [警告!] C/C++言語初心者はこのページを読まないでください。 このページではgcc独自のC/C++拡張文法について解説します。 これらの拡張文法が可能にする機構は確かに便利なのですが、 もちろんANSI規格に従っていないので、一般的には使うべきではありません。 C/C++言語文法を学び始めている初心者はこれらgcc拡張文法を 知るべきではありません。C/C++言語を正しく理解する上で大きな 支障となります。 C/C++言語を十分に熟知した者は、gccがこのようなこともすることを 「雑談」として知っておくと楽しいかもしれません。もちろん 実戦に使うべきではありませんが。しかし初心者が偶然に、これらの 機能を使ってうまくいく場合がありますので、そのような初心者を 見つけたら、それが標準規格ではないことを注意してください。 配列変数をコピー
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く