[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 05/09 23:36 / Filesize : 219 KB / Number-of Response : 879
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

プログラミング質問すれ Part1



1 名前:名無しさん@お腹いっぱい。 [2005/09/22(木) 20:29:34 ]
UNIXおよびUNIX clone環境一般のプログラミングに関する質問スレッド

過去スレ(プログラム技術板)
Part6 pc8.2ch.net/test/read.cgi/tech/1116908090/
Part5 pc8.2ch.net/test/read.cgi/tech/1105723117/
Part4 pc5.2ch.net/test/read.cgi/tech/1095843584/
Part3 pc5.2ch.net/test/read.cgi/tech/1085930894/
Part2 pc5.2ch.net/test/read.cgi/tech/1055110889/
Part1 pc2.2ch.net/tech/kako/992/992057422.html

Part3ミラー makimo.to/2ch/pc5_tech/1085/1085930894.html
Part2ミラー makimo.to/2ch/pc5_tech/1055/1055110889.html

関連スレ
Cygwin使っている人いますか? その14 (UNIX板)
pc8.2ch.net/test/read.cgi/unix/1107587275/
Cygwin使っている人いますか? 3 (Windows板)
pc8.2ch.net/test/read.cgi/win/1090131123/

関連板
Linux板 pc8.2ch.net/linux/
プログラム技術板 pc8.2ch.net/tech/

524 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/07(木) 10:40:39 ]
>>523 書籍はしらないけれど
ttp://xjman.dsl.gr.jp/X11R6/X11/
ttp://www-yano.is.tokushima-u.ac.jp/~mituhara/software_e/
あとりを参考にしてみては?あとめぼしいportsのソースが参考になる。
ただxlibとSDLと使用メモリとか大してかわらんよ。
描画面も考えると
xlib→cairo→pango
ないしは
SDL→cairo→pango
とやっていくと軽くて学習効率が高く見栄えのする結果が得られると思う。
それと「コマンドとして呼び出して結果をもらう」とか
「perlやshを呼び出す」事も選択肢に入れるとコードと使用リソースが小さくできる。

525 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/07(木) 10:46:27 ]
>>524でcairoを出しているのはxlibだときれいなテキストが書きにくいので
freetypeを叩くより楽だからの意味合いが強い。

526 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/07(木) 17:08:06 ]
>>524-525
ありがとう御座います。
がんばります。SDLはいろんなOSで使えるようですね。
いろいろ勉強してみようと思います。


527 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/17(水) 09:35:24 ]
>>523
亀レスだがそういう解説書なら
Xアプリケーション・プログラミング1 Xlib編

しかし書籍の方が現在では流通していないかも。
どこかの図書館にはあるだろうからその場合は最寄りの図書館で取り寄せてもらって。

528 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 17:16:58 ]
下図のように自己交差しているリージョンを、
┏━┓
┃  ┃
┗━╋━┓
   ┃  ┃
   ┗━┛
交点で個別のリージョンに分けたいんですけど、
┏━┓
┃  ┃
┗━┛┏━┓
     ┃  ┃
     ┗━┛
簡便な方法ってないものでしょうか。よろしくお願いします。

529 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 17:23:20 ]
すみません、スレ違だったようです。取り下げます。

530 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 15:10:34 ]
# ping -c 1 -t 10 www.yahoo.co.jp
って実行すれば以下のような結果が表示されると思うのだが

PING www.yahoo.co.jp (124.83.139.192) 56(84) bytes of data.
64 bytes from f1.top.vip.ogk.yahoo.co.jp (124.83.139.192): icmp_seq=1 ttl=57 time=9.06 ms

--- www.yahoo.co.jp ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 9.068/9.068/9.068/0.000 ms

平均値だけを出力させることってできますか?
#ping -c 1 -t 10 www.yahoo.co.jp
9.068

って感じにです。

531 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 15:11:25 ]
すみません、スレ違だったようです。取り下げます。

532 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 15:13:06 ]
>>531
勝手に取り下げないで下さい



533 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 17:19:19 ]
>>530
えっと、そういう機能を持った pingコマンドの別種を自分でプログラムしたい、
って質問だよな?
pingのようにICMPを送受信するには、
SOCK_RAWを使ったソケットプログラムが必要だが、
その辺は理解してるのか?

534 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 17:26:55 ]
単にパイプで適当なワンライナーにつなげば済む程度の話じゃね?

535 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 17:32:39 ]
>>534
それだとプログラミングじゃないからやっぱりスレ違い。取り下げなければならない。

536 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 17:58:32 ]
>>533
muninで出力結果をグラフにしたいだけです

537 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 18:01:43 ]
>>536
じゃあ、Xのプログラムも必要だな。
ツールキットは何を使う予定?

538 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 18:37:33 ]
>>537
必要ねぇだろ?嘘教えるなよww

539 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 18:40:19 ]
ここはプログラミング質問すれだよ。
muninの出力みたいな表示を行なうプログラムを自作したいんだろ?
pingのソースを参考にソケットプログラムとXのプログラムが必要だな。

540 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/16(木) 13:14:14 ]
グラフィックスにXのプログラムはいらないな。
グラフというのが「画像」であるならばcairoを使うのが定番
cairoで作ったコンテキストはファイルとして保存できる他
GDK,xlibのpixbuf、SDLみたいなメモリコンテキストから簡単に扱える。
ImageMagickもいいんだけれどcairoのが良いと思うね、

コマンドプロンプトのコントロールもpipe使ったりsytem使ったりで使うのは有りだから
無理に実装せずpopenとかで呼ぶのも有りだし
perlやpythonでの実装という選択肢もある。

で>530 の場合は無理にICMPの使い方をマスターしないで
perlの「``」かCのpopenでpingを使ってデータを取って
ソートなり平均値を出すという部分をまず作ることが大事なんじゃないかな。

ping部分を作りたかったら別で作ればいいさ。

541 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/16(木) 13:34:45 ]
>>540
perlを使うと「スクリプティング」
(シェルスクリプトも同様)

ここは「プログラミング」
よって、スレ違い。

542 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/16(木) 19:03:06 ]
>>541
スレ違いじゃないと思うけど。
別に何使ったっていいじゃん、こだわること無い。



543 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/17(金) 02:10:39 ]
アクションゲームプログラミングって本を参考に
プログラミングしようと思ってるんですけど
ひとつ疑問が、
Directx SDKのバージョンが違うんですけど
最新版でも問題はありませんか?

544 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/17(金) 08:13:33 ]
この板では回答は得られません

545 名前:名無しさん@お腹いっぱい。 [2009/07/18(土) 14:10:53 ]
まぁそう言わずに

>>543
君には無理

546 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/19(日) 21:14:09 ]
>>541 プログラムの意味分かってないね、


547 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/19(日) 21:16:18 ]
>>543 ここはUNIX板、最小公倍数はwine使用時のdirectXかSDL+OpenGL

アクションゲームは素直にFlashで作った方がいいんじゃない。
アスキーアートでも写真でもいいから
とりあえずキャラ画像そろえるのが先決

548 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/19(日) 21:17:58 ]
>>541 cairoもImageMagickもperlバインディングもあるけれど
Cでの実装は常識の範疇だよ。ちなみに、

549 名前:名無しさん@お腹いっぱい。 [2009/07/21(火) 20:21:55 ]
すいませんちょっと質問させてください。
いま、データのインポートをする簡単なプログラムをCで書いているところなのですが、原因のよくわからないエラーが出てしまっています。

このあとfloat型ポインタのpにデータをいれていきたいのですが、何故かfloat *pのコメントアウトを外すと、
unnkoを二回出力したあとセグメンテーションエラーになるのです。コンパイルは通ります。
float *pを米アウトした状態だと普通に動きます。
float型以外の型の変数やポインタを用意しても同じようなエラーがでていまい、これ以上変数を増やせないんです。

開いてるファイルは8kぐらいの大きさだし、変数の数も多いわけではないのでスタックを食いつぶしてるようにも思えません。
誰か間違いに心あたりありませんか?

ちなみにosはScientificLinux5.3でコンパイラはGNUの4.1です
↓ソースコードはこちら

550 名前:名無しさん@お腹いっぱい。 [2009/07/21(火) 20:24:24 ]
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
char *inbuf;
int i,j;
char c;
FILE *fp;
//float *p;
printf("unnko\n");
if((fp = fopen(argv[1], "r")) == NULL ) {
printf("ファイルオープンエラー\n");
exit(EXIT_FAILURE);
}
printf("unnko\n");

for(i=0;i<126;i++){
if( fgets(inbuf,128,fp)==NULL){
printf("%s Can't read\n",argv[1]);
}
printf("%s",inbuf);
}
fclose(fp);
printf("\n");
return 0;
}


551 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/21(火) 20:30:54 ]
>>550
char *inbufがタダのポインタのままで、メモリ確保してないのが原因。
//float *p; のコメントとかコメントアウトについては、
たまたまそれでメモリ配置が変わってたまたま動いたり動かなかったりしてただけ。

正しくは char inbuf[128]; でちゃんとメモリ確保しろ。

552 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/21(火) 20:36:01 ]
>>551
早いレスありがとう
メモリ確保は既にやった気がするけど夢だったかもしらん。ちょっとやってみる



553 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/21(火) 20:43:13 ]
>>551
キターーーーーーーーーー
ちゃんと動きました。ほんとありがとう

554 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/21(火) 20:45:10 ]
とりえあえず
char *inbuf = malloc(128);
…fgets(inbuf,128,fp)…

char inbuf[128];
…fgets(inbuf,128,&fp[0])あるいはfgets(inbuf,128,fp)…
の違いが分かるようになるくらいは勉強しなよ。

555 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/21(火) 20:51:54 ]
>>554
解決した後に蛇足なこと書くなよ。>>551 の回答者とは別人の人よ。

> …fgets(inbuf,128,&fp[0])あるいはfgets(inbuf,128,fp)…

おいおい、FILE *fp; に対して &fp[0] って意味ないだろ。
(コンパイルすれば単に fp と同じになるにしても)

書きたかったのは &inbuf[0] じゃないのか?

556 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/23(木) 00:37:06 ]
>>530
スレちレス

$ ping -c 1 -t 10 host | tail -1 |awk -F/ '{print $5}'

557 名前:名無しさん@お腹いっぱい。 [2009/09/04(金) 00:52:32 ]
Linux の RAW ソケットで送信パケットをキャプチャし
ないのってどうすんだっけ? どっかのサイトで見たんだ
けどキーワードが悪いのか見つからない…。

558 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/04(金) 12:09:44 ]
libpcap使いなさい。

559 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/04(金) 12:13:41 ]
すみませんが詳しい方のみ回答をお願いします

560 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/04(金) 18:21:06 ]
回答まだでしょうか?急ぎです。

561 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/04(金) 19:31:34 ]
みんな自分が詳しくないということを自覚しているから何も
言わないコトにしたんだと思うよ。(ということにしておく)

562 名前:557 mailto:sage [2009/09/05(土) 00:33:12 ]
>>560
> 回答まだでしょうか?急ぎです。
実際急ぎだったんだがお前は俺じゃないだろ(w

キーワードは PACKET_OUTGOING だった。



563 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/10(木) 20:16:00 ]
>>560
出てこいよ池沼

564 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/21(月) 18:30:40 ]
すみませんが詳しい方のみ回答をお願いします

565 名前:名無しさん@お腹いっぱい。 [2009/09/22(火) 21:06:47 ]
libhoge.so.* という共有ライブラリがあった時、
gcc -o prog prog.c -lhoge
ってやると、progから libhoge.so.*に動的リンク(lddで確認)されますが、
prog.cで、実際にはlibhoge.so.*の関数をひとつも使っていなくても
動的リンクされた状態でコンパイルされてしまいます。

一方、libhoge.aという静的ライブラリがあって、
gcc -o prog prog.c libhoge.a
ってやったような場合は、prog.cの中でlibhoge.aの関数をひとつも使っていなければ、
libhoge.aの中身は使われず、libhoge.aを付けずに
gcc -o prog prog.c でコンパイルしたのと同じバイナリができて、
無駄になりません。

動的リンクの場合でも、関数を使っていないなら、
-lhoge を付けても結果的には動的リンクしないバイナリが作成されるように
できませんか?

566 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/22(火) 22:53:19 ]
使ってないなら -lhogeつけなきゃいいのに

567 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/22(火) 23:05:07 ]
>>566
じゃなくて、使うかどうかわからない場合でも、
-lhogeとか付けておいて、実際に使われなかったらリンクしないようにしたいんだが。
(別の関数から間接的に呼び出されたりして、ライブラリの関数を使ってるかどうか
簡単には判断できないことがある)

静的ライブラリ(libhoge.a)なら可能なのに、
動的ライブラリの場合のみ不可能なのは納得いかないんだが。

ldが、本当に関数を使ってるかどうかチェックするのをさぼってるとしか
思えないんだが、これバグじゃないの?

568 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/22(火) 23:33:53 ]
何でバグって思うのか分からない。わざわざ -lhoge を付けてるのに
付けてないことにしてほしい、って方がワガママでしょ


569 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/22(火) 23:35:59 ]
気に入らなくても、ldはそのように作られているのだから、不要なライブラリを
リンクしないようにするしかない。

570 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/22(火) 23:41:42 ]
>>569
じゃあ、なぜ ldはそのように作られたのか?
関数を(というかシンボルを)使ってるかどうかのチェックぐらい、
簡単にできそうなのになぜしないのか?

571 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/22(火) 23:41:52 ]
>>567
実行時までシンボル解決出来ないんだから、そのライブラリが
本当に呼び出されないかどうかは ld にも分からないんだよ。
だから ld は悪くない。

572 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/22(火) 23:46:17 ]
>>567
そんなことはない。
「シンボル解決出来ない」場合はちゃんと undefined symbol: hoge ..
みたいなエラーが出るから、コンパイル時にも判断できるはず。



573 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/22(火) 23:47:04 ]
>>571
そんなことはない。
「シンボル解決出来ない」場合はちゃんと undefined symbol: hoge ..
みたいなエラーが出るから、コンパイル時にも判断できるはず。

574 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/22(火) 23:51:29 ]
>>571
とりあえず、コンパイル時の判断で不要と思われるライブラリは
(動的)リンクしないのをldのデフォルトにしておいて、

コンパイル時のシンボルレベルの判断では使っていないように見えて、
実際には実行時に使われるような特殊なライブラリの場合のみ、
--force-link みたいなオプションを新設して強制リンクさせればいいだろ。

デフォルトではシンボルを使ってなければリンクしないことにして。

575 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/22(火) 23:54:54 ]
バイナリパッケージでインストールされたコマンドとか見てると、
実際には使ってない動的ライブラリがリンクされてたりするね。
(C++とかXの関係のライブラリにそういうのが多い)

そのソースのMakefileから、-lxxx を外してもコンパイルできたりする。
これって無駄だし、ldが適切にリンク判断してれば
もっと効率の良いバイナリができていたはずなのに。

576 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/22(火) 23:56:33 ]
リ1「こいつ使ってないライブラリをリンクしようとしてるぜ」
リ2「あちゃー、何だそれ」
リ1「でもわざわざ余計な事をするんだから何か考えがあるんだろう」
リ2「リンクする必要が無いなら最初から省けば良いからな」
リ1「仕方が無い、面倒くさいけどリンクしてやるか」
リ2「これでバグとか言われたら最悪だな」

577 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:00:37 ]
>>576
同じソースでも環境によってライブラリが必要だったり不要だったりする場合がある。
そういう場合、共通ソースでは念のため -laaa が付けられている。

リンカーが「使ってないライブラリをリンクしようとしてる」と判断できるなら
それをリンクしないようにするべき。

578 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:01:28 ]
>>573
それはライブラリが足りない場合だろ。
ちゃんと場合分けして考えようぜ。

シンボルが呼び出されないかどうかは保証出来ないんだよ。
別の動的ライブラリから呼び出されるかもしれないし、
動的ライブラリは差し替え可能だから何でもありだ。
ツールは人間様の指示を無視する事は出来無いの。

579 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:02:19 ]
>>576
それと同じ理屈を libxxx.a に適用すると論理破綻。

580 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:05:06 ]
>>578
だから「保証はしなくてよい」
ldのデフォルト動作として、リンクしないようにして、
それでまずい場合(レアケース)のみ、--force-linkみたいなオプションで
強制リンクすればいいだけ。

実際、知らず知らずのうちに使ってるバイナリが
不要なライブラリをリンクしてるんだよ。
ldの動作をちょっと改良するだけで、
それらがすべて改善できるだろ。

581 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:07:46 ]
>>579
動的と政敵の違いを考えることが無いお前の頭の中が破綻してる。

582 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:08:33 ]
>>573
・それは、ライブラリが足りてない事がわかる事を意味していて、
 ライブラリが余分だという事は意味してないよな。
・ldがそのようなライブラリをリンクしないと、dlsym(NULL, ...)が困るかもしれない。



583 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:09:13 ]
>>578
場合わけじゃない。同じ場合だ。
「ライブラリが足りない場合」ではない場合はリンクしない。
で問題ないだろ。

別の動的ライブラリから呼び出されるような場合でも、
ld時にそのライブラリも -lxxx2 で指定するのだから、
結局ldがすべて判断できる。

dlopen()の場合は考慮しないということで。

584 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:09:30 ]
>>580
残念ながら改悪だと思われ。

585 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:10:24 ]
>>583
考慮しろよww

586 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:11:14 ]
>>579
だから場合分けして考えろって。
違う物に同じ理屈で挑むなよ…

もし良いアイデアだと思うなら、自分で実装してみな。
俺等は使わないけど、君みたいな人が他にもいるかもしれん。

587 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:11:24 ]
>>582
dlopen()するようなプログラムなら、
そのプログラムの「実行時の責任」で必要なライブラリを
プログラムでロードするから、今の議論とは関係なし。(考えなくて良い)

588 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:12:20 ]
>>587
dlsym(NULL, ...)って書いただろ。dlopenしないんだよ。

589 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:13:26 ]
>>584
じゃあ、譲歩して、

ldのデフォルトは従来のままとして、
--no-link-unneeded みたいなオプションを付けたら、
不要なライブラリをリンクしない、ということでいいだろ?

どうしてそういうオプションが ldにないのか?

590 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:16:00 ]
>>588
どっちでも、今の議論では同じこと。関係ない。

591 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:19:11 ]
何でもかんでも『同じこと』なんだな。
ちょっと場合分けしたらスッキリ理解出来るのに…

まぁ、ライブラリをロードする時間とメモリが惜しいなら、
自分が使うライブラリくらい把握しとけって事だな

592 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:24:21 ]
>>590
関係有るだろ、-lでリンクしたライブラリを参照するんだから。



593 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:27:50 ]
--as-neededとかあるけど?

594 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:28:10 ]
>>592
dlsym()とかを使わないような普通のプログラムで、
環境対応のため念のため付けられている -lhoge オプションを、
ldが適切に判断してリンクしないようにしたい。

という議論で、dlopen()/dlsym()等で事情がある場合は
ldに --force-linkなどのオプション指定して対応すれば良い話で、
その --force-linkなどのオプションが必要になるプログラムについては
話の本題ではないので、結局 dlopen()/dlsym()等の件は関係ないということ。

595 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:30:35 ]
>>589
お前の糞みたいな益の無いアイデアで作り変えた糞ソフトをldと呼ぶな

596 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:32:38 ]
>>593
詳しい人登場。(正解)

「-lhoge付けたんだから絶対にリンクするべきだ」とか、
「実行時じゃないと判断できない」とか
質問者を叩いていた人、全員不正解。

597 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:34:37 ]
>>595
つまり、現状の ldにすでに備わっている
「--as-needed」オプションは、
「糞みたいな益の無いアイデア」なんですね、わかります。

作り変えなくても、すでにそう作られてるんですが、、

598 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:41:49 ]
>>597
だから、お前のアホみたいなアイデアで作り変えたゲテモンをldと呼ぶなと言ってるんだ。
作り変えないならldそれはそもそものldだ、普通にldと呼べゴミカス

599 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:43:36 ]
>>597
へぇ、じゃあ現状のldはデフォルトで使ってないものをリンクしないんだね?
違うよね?お前の糞ソフトはldじゃないんだよ。

600 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:47:37 ]
>>598-599
見苦しいぞ。
--as-neededオプションをすぐに答えられなかった奴は素直に負けを認めとけww

601 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:47:58 ]
>>596
>「実行時じゃないと判断できない」とか

これは正しいだろ。--as-needed が使えるのは
プログラム側でシンボルテーブルを参照していない
限りにおいてのみだぜ。これも場合分けって奴だ。

当たり前だが GNU の ld 固有の機能だから環境依存に
注意して使ってくれ。

602 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 00:49:56 ]
あー、ちなみに Mac OS X では使えない。
必要とされていないのか、何か問題があるのかは知らん。



603 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 01:02:27 ]
as-needed がデフォルトの動作でなくて、オプション付けないと有効にならない
あたりから察しようぜ

604 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 01:12:29 ]
>>602

古い話で悪いが、自宅の 10.4 だと

% ld -v
Apple Computer, Inc. version cctools-622.9~2

と出たので、Mac OS X の ld は GNU ld ではないと思う。

sed なんかも GNU ではなくて BSD みたいだし。

605 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 01:26:40 ]
opensource.apple.com/source/ld64/

ソースを見てみても独自っぽい感じですね。
C++ で実装されてますし。

606 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 03:37:07 ]
>>600
見苦しいぞ、おまえ

607 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 04:41:57 ]
>>565
> libhoge.aの中身は使われず、libhoge.aを付けずに
> gcc -o prog prog.c でコンパイルしたのと同じバイナリができて、
> 無駄になりません。

何が無駄?

mmap された text/data segment はさわらなきゃ
主記憶に page in されへんと思ってたんやけど…
俺の認識違い???

教えて, えらい人.


608 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 08:37:57 ]
>>607
shared lib本体が主記憶に page in されないとか、そういう問題じゃないと思う。

たとえば、実際には呼んでない C++の古いバージョンのライブラリをリンクした
バイナリができてしまって、あとでライブラリがバージョンアップした時
コマンドが実行できなくなってしまうなどの問題がある。

実際に呼んでいて、ライブラリがないから実行できないのなら仕方ないが、
実際には呼んでないのにコマンド自体が実行できなくなってしまうのはおかしい。

それとも、実行時にリンクしてるライブラリが見つからなくても、
実際に呼び出していないならコマンド本体を実行させるような方法ってある? ないだろ。

609 名前:名無しさん@お腹いっぱい。 [2009/09/23(水) 08:40:03 ]
libhoge.so.* が不要なはずなのに -lhoge でリンクされていて
別のシステムで libhoge.so.* が無い場合に
上の prog.c だけが使いたい人にとっては
無駄に libhoge.c がどこで提供されてるか探してきて
そのコンパイルから何から必要になるじゃん?
だから不要なものはリンクしないで欲しいんだ

610 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 10:51:30 ]
>>608
へ?どうしても動かしたいならdynamic sectionの書き換えくらいするでしょ。

611 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 11:20:31 ]
>>608
>たとえば、実際には呼んでない C++の古いバージョンのライブラリをリンクした
>バイナリができてしまって、あとでライブラリがバージョンアップした時
>コマンドが実行できなくなってしまうなどの問題がある。

これはリンカー以前の問題だよ。
リンカーで解決しようとする前に開発環境を見直した方がいい。
そもそもこんな事が問題になる事自体がおかしいぜ。
古いバージョンのライブラリも同梱しておけば良いだけの話だし。
どんなOSを使ってるんだ?

それと、そのライブラリを絶対に使っていないと言う確信があるなら、
ダミーのライブラリを噛ませれば良いんじゃね?

612 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 11:25:13 ]
--as-needed で問題は解決済み。

元の質問は解決してるのに、
--as-needed を答えられなかった人は、
いつまで負け惜しみの言い訳を続けるんだww



613 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 11:39:15 ]
解決したと思ってるのが…

614 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 11:49:10 ]
>>612は釣りだろ、本人ならあれを解決したなんていわない

615 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 12:35:39 ]
>それと、そのライブラリを絶対に使っていないと言う確信があるなら、
>ダミーのライブラリを噛ませれば良いんじゃね?

まあそうだな

616 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/23(水) 18:17:14 ]
gentooでas-neededつけると結構動かなくなるのがあったから使うの止めたよ.
-lの順番とか適当だと動かなくなったりするし。

検索したらヒットしたので貼っとく
--as-needed introduction and fixing guide
ttp://www.gentoo.org/proj/en/qa/asneeded.xml

617 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/24(木) 16:01:34 ]
プログラムの話でなくてコンパイルの仕方のレベルの無駄話が続いているなぁ。
どうせhello worldかコピペしか作れない癖に
スレ違いだ。

618 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/24(木) 20:05:41 ]
無駄話に無駄なオチがついたな。じゃあ次の質問よろしく。

619 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/24(木) 23:57:12 ]
シェルスクリプトでプログラムを書いてるのですが
$* と $@ の使い分けがよくわかりません


620 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/25(金) 00:19:08 ]
自分で試すとか、マニュアルを読むとかできるだろうに。

list() { for i in "$@"; do echo $i; done; echo; }
set -- a "b c" "d e"
list $*
list $@
list "$*"
list "$@"

621 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/25(金) 07:17:20 ]
>>619
シェルスクリプト総合 その15
pc12.2ch.net/test/read.cgi/unix/1246408968/

622 名前:名無しさん@お腹いっぱい。 [2009/09/25(金) 19:47:46 ]
C言語で自分のOSの種類によって場合分けして実行するにはどうしたらいいんでしょう?
今は、
system("uname > tmpfile");
ってやってから、tmpfileを fopen()で開いて中身を読んでますが、
これだと無駄な気がしています。



623 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/25(金) 21:27:43 ]
>>622
そのまんま、uname() っていう関数がある。
sys/utsname.h

でもふつうはビルド時に ifdef で分けるんじゃないかな。


624 名前:名無しさん@お腹いっぱい。 [2009/09/25(金) 22:17:37 ]
パイプと標準入力の両方を読むために、
O_NDELAYを立ててループしてますが、
なんか重い感じです。
かと言ってsleepを入れると反応が鈍くなります。
何かいい方法はありませんか?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<219KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef