のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,644,331人
昨日:no data人
今日:
最近の注目
人気の最安値情報

私的良スレ書庫

不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

元スレGCCについて part8

gcc スレッド一覧へ / gcc とは? / 携帯版 / dat(gz)で取得 / トップメニュー
スレッド評価: スレッド評価について
みんなの評価 :
タグ : - pragma + - spec + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
レスフィルター : (試験中)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
351 : デフォルトの名無 - 2008/04/07(月) 11:58:14 (+3,-29,-18)
>>349
それはスレッドだから、>>348の言っていることとは違う。
pthread実装はカーネル・スレッドばかりじゃないから。
352 : デフォルトの名無 - 2008/04/07(月) 15:23:45 (+14,-17,-10)
インクルードパスとライブラリのパスを環境変数で設定する方法を教えてください
353 : デフォルトの名無 - 2008/04/07(月) 15:29:27 (+57,+29,-16)
今時、その手法ははやらないんじゃないの?
354 : デフォルトの名無 - 2008/04/07(月) 15:33:12 (-1,-29,-4)
CPATH
LIBRARY_PATH
とか?
355 : デフォルトの名無 - 2008/04/07(月) 17:50:52 (-1,-29,+0)
INCLUDES
LD_LIBRARY_PATH
356 : デフォルトの名無 - 2008/04/08(火) 13:10:13 (+7,-30,-37)
g++ で libfoo1.a と libfoo2.a をリンクしているのですが、
この2つのライブラリが相互に依存しているので、
undefined エラーになります。

libfoo1.a libfoo2.a のソースをいじることなく、
うまくリンクすることはできないでしょうか?
357 : デフォルトの名無 - 2008/04/08(火) 13:17:09 (+3,-30,-64)
libfoo1.a内のどのオブジェクトがlibfoo2.a内のどのオブジェクトに依
存しているかなど、もうちょっと詳しい情報が欲しいけど、とりあえず
gcc .... -lfoo1 -lfoo2 -lfoo1
のような感じでできへん?

libfoo1.aとlibfoo2.aをバラして1つのlibfoo.aにしてしまうとかも。

358 : デフォルトの名無 - 2008/04/08(火) 13:44:25 (-1,-30,-23)
359 : デフォルトの名無 - 2008/04/09(水) 13:51:18 (-2,-30,-21)
LIBRARY_PATHとLD_LIBRARY_PATHの違いは何ですか?
360 : デフォルトの名無 - 2008/04/09(水) 13:53:28 (-1,-29,-9)
ldかld.soか
要するにコンパイル(リンク)時か、実行時か。
361 : デフォルトの名無 - 2008/04/09(水) 16:39:29 (+6,-29,-14)
>>352
どうやってやるの?
IとかLとかでいちいち指定するの?
それともmake?小さいプログラムではわざわざmakeなど使いたくないのだが。
362 : デフォルトの名無 - 2008/04/09(水) 16:41:32 (+35,+12,+0)
スクリプトでやればいいじゃん
363 : デフォルトの名無 - 2008/04/09(水) 17:14:24 (+3,-30,-30)
>>361
CFLAGS=-I/usr/include/foo
LDFLAGS=-L/usr/include/foo -lfoo

default: foo

これだけ。foo.cから実行ファイルfooを作る。
364 : デフォルトの名無 - 2008/04/10(木) 10:28:43 (+3,-30,-55)
/usr/lib/gcc/target/version/includeのようなgcc付属のヘッダのある
ディレクトリを取得する方法はありますか?
-nostdincを指定してるソースからstdarg.h等を使いたいのです。
365 : デフォルトの名無 - 2008/04/10(木) 11:13:22 (-1,-29,-15)
gcc -print-search-dirs
366 : デフォルトの名無 - 2008/04/10(木) 16:07:17 (+15,-30,-137)
nm libhoge.a | grep hageとしたら
00001ffb t hageとでるのに
int main() {
 return hage();
}
のようにhageを呼び出してるプログラムのリンクが失敗するのですが
どのような原因が考えられますでしょうか?

gcc -g -O0 main.c  -o huga -L. -lhoge
main.c:2: undefined reference to `hage`
collect2: ld はステータス 1 で終了しました
367 : デフォルトの名無 - 2008/04/10(木) 16:19:41 (-2,-30,-12)
? gcc -v -g -O0 main.c -o huga -L. -lhoge
368 : デフォルトの名無 - 2008/04/10(木) 17:02:27 (-2,-30,-18)
? gcc -v -g -O0 main.c -o huga -L. -lhoge -Wl,--verbose
369 : デフォルトの名無 - 2008/04/10(木) 17:43:36 (-1,-29,-18)
CとFORTRANでは最適化の方法が違うの?
370 : デフォルトの名無 - 2008/04/10(木) 22:06:32 (+16,-13,-10)
>>366
t ってことはローカルシンボルじゃん
371 : デフォルトの名無 - 2008/04/14(月) 20:54:13 (+17,-30,-64)
Cygwin上でGCCのC,C++のクロス環境を作ってます。
newlibと組み合わせてビルドはうまくいってるんですが、
libstdc++のgchファイルがかなりサイズを食っていて扱いづらいです。
実際には、C++の言語本体の機能だけ利用できれば十分です。
configure時にうまく無効にする方法などあれば教えてください。
372 : デフォルトの名無 - 2008/04/15(火) 13:19:53 (+2,-29,-19)
libstdc++で
configure --help
やってみたら、何か出るかも?
373 : デフォルトの名無 - 2008/04/15(火) 13:22:43 (+61,+29,-43)
GCCに、関数呼び出しとリターンを表示させたり記録させたりする
オプションってありましたっけ?
なんかあったような気もするけど、ぐぐってもヒットせんかった。
374 : デフォルトの名無 - 2008/04/15(火) 13:25:40 (+57,+29,-4)
実行時だとみれるような機能があったような?
375 : デフォルトの名無 - 2008/04/15(火) 13:35:46 (+40,-29,-29)
>>373
記録させることはできないが、-finstrument-functions で hook させることはできる。

ググればいろいろ出てくるが、
http://www.ibm.com/developerworks/jp/linux/library/l-graphvis/index.html
ここがわかりやすいな。
376 : デフォルトの名無 - 2008/04/15(火) 13:56:20 (+63,+29,-6)
>>375
なにこれー!今日ほど2chが役に立った日はないわ。ちょーさんくすこ。
377 : デフォルトの名無 - 2008/04/15(火) 14:23:08 (-1,-30,-48)
>>371
--enable-libstdcxx-pch build pre-compiled libstdc++ headers
[default=$is_hosted]
378 : 371 - 2008/04/15(火) 21:11:44 (-1,-29,-1)
>>372,377
ありがとうございます。
--disable-libstdcxx-pchを入れて試してみます。
379 : デフォルトの名無 - 2008/04/24(木) 20:53:48 (+62,+29,-70)
gccで、クロージャとは言わないまでも、
ユーザーが作った関数へ、後から動的に値を埋め込む方法はありませんか?
言語処理系のコールバックの実装で、
その関数が呼び出された時に、その値を参照したいのです。
グローバル変数や、アセンブラを使えば作れるのですが、
できれば使わずに済ませたいので。
380 : デフォルトの名無 - 2008/04/24(木) 21:00:19 (+41,-22,-4)
任意のパラメータを受け取れる void* 型の引数を作るといいよ。
381 : デフォルトの名無 - 2008/04/24(木) 21:00:26 (+0,-22,+0)
つ 関数へのポインタ
382 : デフォルトの名無 - 2008/04/24(木) 21:28:31 (-6,-29,-1)
#include </dev/tty>
383 : デフォルトの名無 - 2008/04/24(木) 21:30:04 (+68,+29,-33)
>>380-381
いやそうじゃなくて。
言い方を変えれば、関数とユーザー値を組み合わせて
新しい関数を作れるかって事です。
その新しい関数は、呼び出し時に
なんらかの方法でユーザー値を受け取れる事。
384 : デフォルトの名無 - 2008/04/24(木) 21:31:21 (+56,+28,-35)
また、誰が呼び出すかは判らないので、
ユーザー値をその関数の引数に入れる事はできません。
385 : デフォルトの名無 - 2008/04/24(木) 21:39:56 (+3,-30,-96)
g() { return closure_ref(0) + 1; }
f(pg) { return ((int (*)())pg)(); }
main() {
printf("%d\n", f(make_closure(g, 1)));
return 0;
}

この場合2が表示される。
make_closureとclosure_refを作れるか

fはstdlib.hのbsearchやqsortのように、
任意のライブラリの可能性もある。
(当然gはその型に合った関数型になる)
386 : デフォルトの名無 - 2008/04/24(木) 21:55:20 (+9,-30,-182)
C++ならできるからg++使えってのはあり?

#include <boost/tr1/functional.hpp>
#include <boost/utility/result_of.hpp>
#include <cstdio>

template<typename T>
T g(T x)
{
  return x + 1;
}

template<typename T>
typename boost::result_of<T ()>::type
f(T g)
{
  return g();
}

int main()
{
  std::printf("%d\n", f(std::tr1::bind(g<int>, 1)));
}
387 : デフォルトの名無 - 2008/04/24(木) 22:02:29 (+8,-29,-29)
>>386
C++の型拡張による物は呼び出し側(f相当)を限定してしまうので不可です。
あくまで汎用的なコールバックに使える事が前提なので。
一応nested functionで限定的にできる事は判っています。
388 : デフォルトの名無 - 2008/04/24(木) 22:08:04 (+3,-30,-23)
>>387
その限定というのは、boost::function (もしくはstd::tr1::function)で何とかなるものではない?
389 : デフォルトの名無 - 2008/04/24(木) 22:16:17 (-1,-29,-10)
>>388
boost::functionでできそうです。
ありがとうございます。
390 : デフォルトの名無 - 2008/04/25(金) 13:47:24 (-1,-29,+0)
GCC4で、できなくなった気もするが
http://gcc.gnu.org/onlinedocs/gcc-3.4.6/gcc/Nested-Functions.html
391 : デフォルトの名無 - 2008/05/03(土) 12:17:28 (-2,-30,-13)
Apache C++ Standard Library 4.2.1 released
http://mail-archives.apache.org/mod_mbox/www-announce/200805.mbox/%3c20080502200946.T96786@minotaur.apache.org%3e
392 : デフォルトの名無 - 2008/05/20(火) 07:48:27 (-2,-30,-33)
http://gcc.gnu.org/ml/gcc/2008-05/msg00216.html
> GCC 4.2.4 is now available to download from gcc.gnu.org and ftp.gnu.org
393 : デフォルトの名無 - 2008/05/24(土) 14:54:03 (+140,-30,-130)
たまに聞く、GCCは4シリーズより3.4とかの方がアプリなどの動きが早いって聞いて入れてみた。
コンパイルが出来ない物が出てきたから一時は諦めたけど、最近C++関連は(sijc,glibmm,cairomm,gtkmmなど)
全部同じコンパイラーじゃないとうまく動かないというのを知ってその辺全部3.4でコンパイル。

使用してみた感じ、コンパイル(-O2のみ)した各アプリの動きが良い。カーネル2.6.25もGCC3.4でコンパイル。
立ち上がりとかも早くなりました。dmesgの左に出る起動時の細かい時間とかも早くなっているのが解る。

GCCの4シリーズなどは、その新機能を生かすソースを書いてあげないとあまり意味が無いんでしょうか・・・
快適なのでとりあえずしばらく3.4メインにしようかな。
394 : デフォルトの名無 - 2008/05/24(土) 16:53:22 (+57,+29,+2)
>>393
気のせいですよ。
395 : デフォルトの名無 - 2008/05/24(土) 17:50:22 (+47,+19,-5)
このスレ見ている人がいるなんてwww 全米も感動(TT)
396 : デフォルトの名無 - 2008/05/24(土) 18:26:30 (+57,+29,-17)
違いが気になるなら、アセンブリ出力を見比べてみればいい。
397 : デフォルトの名無 - 2008/05/24(土) 21:59:58 (+96,+29,-109)
アセンブリなんか見るよりアプリケーションベンチ取ればいい。
アセンブリの差はCPU側の処理方法によって優劣付けにくいから。

それにしてもgcc替えてまでやっての感想が「気がします」とは
だんだんオーヲタみたいになってきたな。電源ケーブルを純銅にしたら
電気の流れが速くなってキビキビ動作になりました!と変わらん。
398 : デフォルトの名無 - 2008/05/24(土) 22:49:16 (+67,+29,-4)
>>393
気になるなら調べてください。
調べる気がないなら気にしない方がいいです。
399 : デフォルトの名無 - 2008/05/24(土) 23:14:13 (+66,+25,-3)
>>393
自前コンパイルなら機種依存オプションまで付けろ、と。
400 : デフォルトの名無 - 2008/05/24(土) 23:30:40 (+107,+29,-39)
>>397
電源ケーブルは材質よりインピーダンスとアース極性チェックが大事。
信号線の方は俺は純銀ケーブルにしてる。無酸素銅とどっちが良いかはなんとも言えんが。
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / gcc スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : - pragma + - spec + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

類似してるかもしれないスレッド


トップメニューへ / →のくす牧場書庫について