Linker && Loader

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

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

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

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

なので objcopy 最強。
278デフォルトの名無しさん:2005/12/25(日) 23:37:14
objcopyってsupported targetsにあればアーキテクチャを越えたバイナリ変換ってできる?
例えば
 elf32-i386 -> elf32-powerpcle
とか。
279デフォルトの名無しさん:2005/12/26(月) 00:50:29
>>278
できたと思った。昔configureして
ぜんぶ入りのobjcopyを作ったことがある
280278:2005/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
281デフォルトの名無しさん:2005/12/27(火) 20:48:33
だめかー。やっぱり一旦binaryを経由させないと無理か。
282デフォルトの名無しさん:2006/02/17(金) 13:52:54
保守!上げたら怒りますか?
1時間以内に返答が無かったら賛同してくれるものと見なす。
283デフォルトの名無しさん:2006/02/17(金) 14:14:27
別に怒りはしないが、age るならそれなりのネタを用意して欲しい物だな。
まさか、単なる保守 age じゃないよね??
284デフォルトの名無しさん:2006/02/17(金) 14:17:11
うわ。まだ見てる人がいただなんて!
ネタはないですね。そろそろ落ちるんじゃないかと思った。
しいて言えば本購入予定です。ハイ。
285デフォルトの名無しさん:2006/02/20(月) 11:25:05
保守。
286デフォルトの名無しさん:2006/02/21(火) 10:47:36
保守。
287デフォルトの名無しさん:2006/04/25(火) 10:08:26
.laと.soの違いって何ですか?
288287:2006/04/25(火) 13:37:56
.a → .la
.so → .lo
というlibtool版か。

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

自分でリソース追加したいんだが
292デフォルトの名無しさん
binutils自ら追っかけてみれば?