トップページ⇒tech
292コメント106KB

Linker && Loader

■ このスレッドは過去ログ倉庫に格納されています
0001さとし ◆k4PcAe16 NGNG
読んでる人いますか?
難しいような気がするんですが。。。
僕もリンカとローダを作れるようになれますか?
0231デフォルトの名無しさん05/03/05 08:36:54
>>230
http://www.google.co.jp/search?hl=ja&q=%E8%90%8C%E3%81%88%E6%9C%AC&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
0232デフォルトの名無しさん2005/05/26(木) 21:34:03
>>226
×ぶっちゃけ、「Linkers & Loaders」のような本が少なすぎる。
○ぶっちゃけ、「Linkers & Loaders」のような本を読む人が少なすぎる。
0233デフォルトの名無しさん2005/05/26(木) 22:02:20
リンカー&ローダーとかPICとか*.a *.soを詳細に解説した本って売ってない?
0234本田& ◆xOS3wf.pJg 2005/05/27(金) 01:11:58
>>219
PEフォーマットってCOFFフォーマットの別名だよ。
0235デフォルトの名無しさん2005/05/27(金) 19:17:49
>>233
L&LかInterfaceの連載くらいしか見たことない。

>>234
PEとCOFFは同一ではないから、別名というのは違う。
COFFを拡張したのがPE。
0236デフォルトの名無しさん2005/05/28(土) 22:18:45
COFFとPEは結構用語が変わってるから拡張というよりM$ローカライズな希ガス
0237デフォルトの名無しさん2005/06/25(土) 21:26:29
プログラムを書くとリンカーが勝手にリンクしているcrt0.oを解説したドキュメントってどこかに無いですか?
いったいこれは何なのか。
私の書いたmain以外のstartとかendとかいったシンボル名は何なのかと。
0238デフォルトの名無しさん2005/06/25(土) 23:22:56
>>237
ソース見たほうが早いよね
0239デフォルトの名無しさん2005/06/25(土) 23:50:58
>>238
ソースがあるといいね。
0240デフォルトの名無しさん2005/06/26(日) 00:27:02
>>237
ただの entry point でしょ。

>>239
何でソースが無いと思ったの?
02412392005/06/26(日) 01:04:27
>>240
crt0.oなんて名前はありきたりで環境が分からないから。
02422372005/06/26(日) 09:42:43
(´-`).。oO(結局どこを見ればいいんだろう……)
0243デフォルトの名無しさん2005/06/26(日) 15:20:31
>>237
いっぱいあるよ
0244デフォルトの名無しさん2005/06/26(日) 15:32:33
>>242
crt0ってのは(名前からすると)Cランタイムライブラリを初期化するためのコードで、
Cランタイムライブラリに依存するもの(≒Cコンパイラに依存するもの)。
ライブラリ(コンパイラ)のマニュアルに書いてあるかもしれないし、
コンパイラセットにソースコードが付いてることもある(少なくともMSVCには付いてる)。
0245デフォルトの名無しさん2005/06/26(日) 15:36:41
つか、ググれば腐る程出て来るんだよ
0246デフォルトの名無しさん2005/06/26(日) 16:27:58
少なくともcrt0.oならMSVCではないな。
0247デフォルトの名無しさん2005/06/26(日) 16:55:09
.oならunix系かね。いずれにしても環境も明記してないんじゃ、言及できるのはこの程度か。
02482372005/06/26(日) 23:49:07
(´-`).。oO(Linux(FedoraCore1)でgccなんだな…ググっても出てこないんだな…)
0249デフォルトの名無しさん2005/06/27(月) 00:32:08
gccならソース読めで終わり。
0250デフォルトの名無しさん2005/06/27(月) 08:51:19
*argv[]を準備したり。
02512372005/06/27(月) 22:21:58
(´-`).。oO(その読むべきソースの名前がわからないんだな…解説資料もあるとうれしい)
0252デフォルトの名無しさん2005/06/27(月) 23:35:47
gcc-3.4.X/gcc/{Makefile.in,unwind*,config/*}
0253デフォルトの名無しさん2005/06/28(火) 01:07:57
次はソースの内容を解説してくれ、か?
0254デフォルトの名無しさん2005/06/28(火) 17:46:07
スレ違いじゃねぇの?
一応、適当なリンクを貼っておくが。
http://pc8.2ch.net/test/read.cgi/tech/1058134693/726-
02552372005/07/02(土) 19:27:18
(´-`).。oO(所詮わらはわらか…)
0256デフォルトの名無しさん2005/07/03(日) 04:05:18
五月蠅い、無能が喋るな。
無能は震えながらではなく、藁のように氏ぬのだ。
0257デフォルトの名無しさん2005/07/03(日) 14:35:28
>>256
そういうの恥ずかしいから辞めようよ
0258デフォルトの名無しさん2005/07/03(日) 18:39:57
>>257
【鉄則】アホはスルー
0259デフォルトの名無しさん2005/07/04(月) 15:02:23
【結論】 >>258=アホ
0260デフォルトの名無しさん2005/09/18(日) 16:41:50
>>20
リンカからコンパイラ、アセンブラまで作ったが
さすがにOSはアホらしいな。
0261デフォルトの名無しさん2005/11/24(木) 04:18:36
WINNTやWINNT\System32の下のDLLはImageBaseが指定されてるものが多いけど、
もしかしてWindows付属のDLLって全部アドレス空間のどこにマップされるか、
最初から全部決まってるの?
0262デフォルトの名無しさん2005/11/24(木) 06:46:41
その方が実行が早い
0263デフォルトの名無しさん2005/11/24(木) 10:53:10
べーしっ君が買えなくて、しかたなく自作したことはある
0264デフォルトの名無しさん2005/11/24(木) 16:38:48
>>264ゲットずざー!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
        ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ
0265デフォルトの名無しさん2005/11/24(木) 17:15:11
>>262
それはもちろんそうなんだけど、仮想アドレス空間の無駄使いじゃない?
0266デフォルトの名無しさん2005/11/24(木) 17:42:10
>>265
ページは4kバイト単位なのでそうでもない
それに指定されたページにロードできなかった場合でも違う場所に割り当てられる
0267デフォルトの名無しさん2005/11/24(木) 23:06:29
>>265
世の中の大半の用途では、物理メモリはともかく
アドレス空間ケチるほどメモリ使わないので問題ない。
0268デフォルトの名無しさん2005/11/24(木) 23:12:05
とか言ってた時期がLinuxにもありました。結局それじゃ持たなくなってELFになったね。
0269デフォルトの名無しさん2005/11/24(木) 23:16:14
>>268
くやしく
0270デフォルトの名無しさん2005/11/24(木) 23:56:56
>>266
>それに指定されたページにロードできなかった場合でも違う場所に割り当てられる

え、じゃあ例えば、俺の使ってるWindowsのNTDLL.DLL、
ImageBaseは0x77f80000という値になってるけど、これは
別の場所に再配置することも可能なの?
0271デフォルトの名無しさん2005/11/24(木) 23:57:00
>>268
ELFへの移行は
・共有ライブラリが作りやすい
・動的リンクがやりやすい
・クロス開発がやりやすい
・C++対応(コンストラクタとデストラクタ)
が主な理由。

64bit対応ってのは(当時と今は)あまり重要ではない。
未来は知らんが。
0272デフォルトの名無しさん2005/11/25(金) 00:07:06
>>270
DLLは基本的に再配置するものなので、必ず再配置セクションを持つ。
NTDLL.DLLも再配置セクションがあるので(dumpbinで覗いてみ)、
必要なら再配置できる。
0273デフォルトの名無しさん2005/11/25(金) 01:32:46
>>272
それだとImageBaseを固定するメリットってあんまりなくない?
0274デフォルトの名無しさん2005/11/25(金) 02:31:37
>>273
適当なアドレスに固定してるんじゃなくて、
一通りメモリに読み込んで再配置完了したのと同等のアドレスにしてある。

アプリ起動のたびにほぼ必ず読み込まれるシステム系のDLLを
毎回再配置しないで済む分、起動が速くなる。
0275デフォルトの名無しさん2005/12/21(水) 10:46:27
ビットマップをリンクしたいんだけど、どうしたらいいのか
とりあえず、ヒントくれ
0276デフォルトの名無しさん2005/12/21(水) 13:35:48
>>275
objcpy
0277デフォルトの名無しさん2005/12/25(日) 19:40:34
意外と知られていないが
Cygwin/Mingwが吐く relocatable object file は
MS環境でもリンクできる。

なので objcopy 最強。
0278デフォルトの名無しさん2005/12/25(日) 23:37:14
objcopyってsupported targetsにあればアーキテクチャを越えたバイナリ変換ってできる?
例えば
 elf32-i386 -> elf32-powerpcle
とか。
0279デフォルトの名無しさん2005/12/26(月) 00:50:29
>>278
できたと思った。昔configureして
ぜんぶ入りのobjcopyを作ったことがある
02802782005/12/26(月) 16:09:38
>>279
できないお  >_<

$ objcopy -I elf32-i386 -O elf32-powerpcle foo foo-ppc
objcopy: Warning: Output file cannot represent architecture `i386'


targetにはちゃんと入ってるお
$ objcopy 2>&1 | tail -1
objcopy: supported targets: elf64-x86-64 elf32-i386 a.out-i386-linux efi-app-ia32 elf64-little elf64-big
elf32-little elf32-big elf64-alpha ecoff-littlealpha elf32-hppa-linux elf32-hppa elf64-ia64-little elf64-ia64-big
efi-app-ia64 elf32-m68k a.out-m68k-linux elf32-powerpc aixcoff-rs6000 elf32-powerpcle ppcboot
elf64-powerpc elf64-powerpcle aixcoff64-rs6000 elf32-s390 elf64-s390 elf32-sparc a.out-sparc-linux
elf64-sparc a.out-sunos-big srec symbolsrec tekhex binary ihex
0281デフォルトの名無しさん2005/12/27(火) 20:48:33
だめかー。やっぱり一旦binaryを経由させないと無理か。
0282デフォルトの名無しさん2006/02/17(金) 13:52:54
保守!上げたら怒りますか?
1時間以内に返答が無かったら賛同してくれるものと見なす。
0283デフォルトの名無しさん2006/02/17(金) 14:14:27
別に怒りはしないが、age るならそれなりのネタを用意して欲しい物だな。
まさか、単なる保守 age じゃないよね??
0284デフォルトの名無しさん2006/02/17(金) 14:17:11
うわ。まだ見てる人がいただなんて!
ネタはないですね。そろそろ落ちるんじゃないかと思った。
しいて言えば本購入予定です。ハイ。
0285デフォルトの名無しさん2006/02/20(月) 11:25:05
保守。
0286デフォルトの名無しさん2006/02/21(火) 10:47:36
保守。
0287デフォルトの名無しさん2006/04/25(火) 10:08:26
.laと.soの違いって何ですか?
02882872006/04/25(火) 13:37:56
.a → .la
.so → .lo
というlibtool版か。

.soはあるのに、.laがなくなると起動しなくなるものがあるって事は、
.laをdlopenしているアプリがあるのかな。
02892872006/04/25(火) 16:17:41
がーん、.laって共有ライブラリの情報ファイルなんだな。
0290デフォルトの名無しさん2006/04/28(金) 22:50:10
>>287
そーそー、textファイルだから、開けてびっくりするよな。
libディレに、んなもんイッパイ入れんな!と、最初思ったよ。
0291デフォルトの名無しさん2006/08/24(木) 07:04:11
PEの.rsrcセクション
わかるやつおらんかね?
さっぱり意味のわかる資料がない

自分でリソース追加したいんだが
0292デフォルトの名無しさん2006/08/24(木) 22:16:10
binutils自ら追っかけてみれば?
■ このスレッドは過去ログ倉庫に格納されています