gccのリンカスクリプト、日本語だとやはりコレになるのかしら、まあそうそう変わるものでもないだろうし。

リンカ・ロ-ダ実践開発テクニック: 実行ファイルを作成するために必須の技術 (COMPUTER TECHNOLOGY) | 坂井 弘亮 amazon.co.jp/dp/4789838072

LLVMはこれのオブジェクト生成のあたりを眺めた感じでは、スクリプトではなくてC++のコードとして書く感じに見えるけど……。

作って学ぶコンピュータアーキテクチャ —— LLVMとRISC-Vによる低レイヤプログラミングの基礎 | 木村 優之
amazon.co.jp/dp/4297129140

リンカー・スクリプト機能はその名の通りリンカーの機能 (GNU ld と gold とか mold とかに、リンカー固有のシンタックスで実装されている)なので、LLVM でもリンク時に使うリンカー次第で使えるような… (LLVM+RISC-Vの本は未読なので、このコメントは大外しかも?)

LLVM使ったことない&流し読みなので全然わかってないですが、リンカコマンドの互換機能? みたいなのはありそうな予感はしますね(どのみちELFですし混在できそうな

LLVM のデフォルトリンカーである lld には GNU ld のリンカー・スクリプトのサブセットの機能があるようです: lld.llvm.org/ELF/linker_script
あと、コンパイラは LLVM を使うけど、リンカーは GNU ld / gold / mold を使うってこともできるので…

フォロー

ありがとうございます、やはり互換機能があるんですね。
例の本のコードはコンパイラから直接コード生成する経路のRISC-V対応みたいでしたので、アセンブラ通す分には標準リンカで(リンカスクリプト通して)やるみたいですね。

· · SubwayTooter · 1 · 0 · 0

UNIX系OSの場合、ELF (ファイル形式), DWARF (ELF中のデバッグ情報形式)、System-V ABI という標準があり、どのコンパイラー・リンカーもそれに合わせているので、コンパイラやリンカーは(リンカースクリプトをゴリゴリに書いている場合など特殊なケースを除き)交換可能ですね。異なるコンパイラを混ぜて単一バイナリも作れます。
UEFIブートブロックとかだとWindows系ABIなのでやや面倒になりますが。

ログインして会話に参加
Fedibird

様々な目的に使える、日本の汎用マストドンサーバーです。安定した利用環境と、多数の独自機能を提供しています。