JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
マニュアルページセクション 1: ユーザーコマンド     Oracle Solaris 11.1 Information Library (日本語)
このドキュメントの評価
search filter icon
search icon

ドキュメントの情報

はじめに

紹介

User Commands

acctcom(1)

adb(1)

addbib(1)

admin(1)

alias(1)

allocate(1)

amt(1)

appcert(1)

apptrace(1)

apropos(1)

ar(1)

arch(1)

as(1)

asa(1)

at(1)

atq(1)

atrm(1)

audioconvert(1)

audioctl(1)

audioplay(1)

audiorecord(1)

audiotest(1)

auths(1)

auto_ef(1)

awk(1)

banner(1)

basename(1)

basename(1B)

batch(1)

bc(1)

bdiff(1)

bfs(1)

bg(1)

biff(1B)

break(1)

builtin(1)

cal(1)

calendar(1)

case(1)

cat(1)

cd(1)

cdc(1)

cdrw(1)

chdir(1)

checkeq(1)

checknr(1)

chgrp(1)

chkey(1)

chmod(1)

chown(1)

chown(1B)

ckdate(1)

ckgid(1)

ckint(1)

ckitem(1)

ckkeywd(1)

ckpath(1)

ckrange(1)

ckstr(1)

cksum(1)

cktime(1)

ckuid(1)

ckyorn(1)

clear(1)

cmp(1)

col(1)

comb(1)

comm(1)

command(1)

compress(1)

continue(1)

cp(1)

cpio(1)

cpp(1)

cputrack(1)

crle(1)

crontab(1)

csh(1)

csplit(1)

ct(1C)

ctags(1)

ctrun(1)

ctstat(1)

ctwatch(1)

cu(1C)

cut(1)

date(1)

dc(1)

deallocate(1)

decrypt(1)

delta(1)

deroff(1)

df(1B)

dhcpinfo(1)

diff(1)

diff3(1)

diffmk(1)

digest(1)

digestp(1)

dircmp(1)

dirname(1)

dirs(1)

dis(1)

disown(1)

dispgid(1)

dispuid(1)

dos2unix(1)

dpost(1)

du(1)

du(1B)

dump(1)

dumpcs(1)

dumpkeys(1)

echo(1)

echo(1B)

ed(1)

edit(1)

egrep(1)

eject(1)

elfdump(1)

elfedit(1)

elffile(1)

elfsign(1)

elfwrap(1)

encrypt(1)

enhance(1)

env(1)

eqn(1)

errange(1)

errdate(1)

errgid(1)

errint(1)

erritem(1)

error(1)

errpath(1)

errstr(1)

errtime(1)

erruid(1)

erryorn(1)

eval(1)

ex(1)

exec(1)

exit(1)

expand(1)

export(1)

exportfs(1B)

expr(1)

expr(1B)

exstr(1)

factor(1)

false(1)

fastboot(1B)

fasthalt(1B)

fc(1)

fg(1)

fgrep(1)

file(1)

file(1B)

filebench(1)

filep(1)

filesync(1)

filofaxp(1)

find(1)

finger(1)

fmt(1)

fmtmsg(1)

fold(1)

for(1)

foreach(1)

franklinp(1)

from(1B)

ftp(1)

function(1)

gcore(1)

gencat(1)

geniconvtbl(1)

genmsg(1)

get(1)

getconf(1)

getfacl(1)

getlabel(1)

getopt(1)

getoptcvt(1)

getopts(1)

gettext(1)

gettxt(1)

getzonepath(1)

glob(1)

goto(1)

gprof(1)

grep(1)

groups(1)

groups(1B)

grpck(1B)

hash(1)

hashcheck(1)

hashmake(1)

hashstat(1)

head(1)

helpdate(1)

helpgid(1)

helpint(1)

helpitem(1)

helppath(1)

helprange(1)

helpstr(1)

helptime(1)

helpuid(1)

helpyorn(1)

hist(1)

history(1)

hostid(1)

hostname(1)

i386(1)

i486(1)

iconv(1)

if(1)

indxbib(1)

install(1B)

ipcrm(1)

ipcs(1)

isainfo(1)

isalist(1)

jobs(1)

join(1)

jsh(1)

kbd(1)

kdestroy(1)

keylogin(1)

keylogout(1)

kill(1)

kinit(1)

klist(1)

kmdb(1)

kmfcfg(1)

kpasswd(1)

krb5-config(1)

ksh(1)

ksh88(1)

ksh93(1)

ktutil(1)

kvno(1)

lari(1)

last(1)

lastcomm(1)

ld(1)

ldapadd(1)

ldapdelete(1)

ldaplist(1)

ldapmodify(1)

ldapmodrdn(1)

ldapsearch(1)

ldd(1)

ld.so.1(1)

let(1)

lex(1)

lgrpinfo(1)

limit(1)

line(1)

list_devices(1)

listusers(1)

llc2_autoconfig(1)

llc2_config(1)

llc2_stats(1)

ln(1)

ln(1B)

loadkeys(1)

locale(1)

localedef(1)

logger(1)

logger(1B)

login(1)

logname(1)

logout(1)

look(1)

lookbib(1)

lorder(1)

ls(1)

ls(1B)

m4(1)

mac(1)

mach(1)

machid(1)

madv.so.1(1)

mail(1)

Mail(1B)

mail(1B)

mailcompat(1)

mailp(1)

mailq(1)

mailstats(1)

mailx(1)

make(1S)

makekey(1)

man(1)

mconnect(1)

mcs(1)

mdb(1)

mesg(1)

mkdir(1)

mkmsgs(1)

mkstr(1B)

mktemp(1)

moe(1)

more(1)

mp(1)

mpss.so.1(1)

msgcc(1)

msgcpp(1)

msgcvt(1)

msgfmt(1)

msggen(1)

msgget(1)

mt(1)

mv(1)

nawk(1)

nc(1)

ncab2clf(1)

ncakmod(1)

neqn(1)

netcat(1)

newform(1)

newgrp(1)

newsp(1)

newtask(1)

nice(1)

nl(1)

nm(1)

nohup(1)

notify(1)

nroff(1)

od(1)

on(1)

onintr(1)

optisa(1)

pack(1)

packagemanager(1)

page(1)

pagesize(1)

pargs(1)

passwd(1)

paste(1)

patch(1)

pathchk(1)

pax(1)

pcat(1)

pcred(1)

perl(1)

pfbash(1)

pfcsh(1)

pfexec(1)

pfiles(1)

pfksh(1)

pflags(1)

pfsh(1)

pftcsh(1)

pfzsh(1)

pg(1)

pgrep(1)

pkcs11_inspect(1)

pkg(1)

pkgdepend(1)

pkgdiff(1)

pkgfmt(1)

pkginfo(1)

pkglint(1)

pkgmerge(1)

pkgmk(1)

pkgmogrify(1)

pkgparam(1)

pkgproto(1)

pkgrecv(1)

pkgrepo(1)

pkgsend(1)

pkgsign(1)

pkgtrans(1)

pkill(1)

pklogin_finder(1)

pktool(1)

plabel(1)

pldd(1)

plgrp(1)

plimit(1)

pmadvise(1)

pmap(1)

pm-updatemanager(1)

popd(1)

ppgsz(1)

ppriv(1)

pr(1)

praliases(1)

prctl(1)

preap(1)

print(1)

printenv(1B)

printf(1)

priocntl(1)

proc(1)

prof(1)

profiles(1)

projects(1)

prs(1)

prt(1)

prun(1)

ps(1)

ps(1B)

psig(1)

pstack(1)

pstop(1)

ptime(1)

ptree(1)

pushd(1)

pvs(1)

pwait(1)

pwd(1)

pwdx(1)

radadrgen(1)

ranlib(1)

rcapstat(1)

rcp(1)

read(1)

readonly(1)

red(1)

refer(1)

regcmp(1)

rehash(1)

remote_shell(1)

remsh(1)

renice(1)

repeat(1)

reset(1B)

return(1)

rksh(1)

rksh88(1)

rlogin(1)

rm(1)

rmail(1)

rmdel(1)

rmdir(1)

rmformat(1)

rmmount(1)

rmumount(1)

roffbib(1)

roles(1)

rpcgen(1)

rpm2cpio(1)

rsh(1)

runat(1)

rup(1)

rup(1C)

ruptime(1)

rusage(1B)

rusers(1)

rwho(1)

sact(1)

sar(1)

sccs(1)

sccs-admin(1)

sccs-cdc(1)

sccs-comb(1)

sccs-delta(1)

sccsdiff(1)

sccs-get(1)

sccs-help(1)

sccshelp(1)

sccs-prs(1)

sccs-prt(1)

sccs-rmdel(1)

sccs-sact(1)

sccs-sccsdiff(1)

sccs-unget(1)

sccs-val(1)

scp(1)

script(1)

sdiff(1)

sed(1)

sed(1B)

select(1)

set(1)

setenv(1)

setfacl(1)

setlabel(1)

setpgrp(1)

settime(1)

sftp(1)

sh(1)

shcomp(1)

shell_builtins(1)

shift(1)

shutdown(1B)

size(1)

sleep(1)

soelim(1)

sort(1)

sortbib(1)

sotruss(1)

source(1)

sparc(1)

spell(1)

spellin(1)

split(1)

srchtxt(1)

ssh(1)

ssh-add(1)

ssh-agent(1)

ssh-http-proxy-connect(1)

ssh-keygen(1)

ssh-keyscan(1)

ssh-socks5-proxy-connect(1)

stop(1)

strchg(1)

strconf(1)

strings(1)

strip(1)

stty(1)

stty(1B)

sum(1)

sum(1B)

sun(1)

suspend(1)

svcprop(1)

svcs(1)

switch(1)

symorder(1)

sys-suspend(1)

sysV-make(1)

t300(1)

t300s(1)

t4014(1)

t450(1)

tabs(1)

tail(1)

talk(1)

tar(1)

tbl(1)

tcopy(1)

tee(1)

tek(1)

telnet(1)

test(1)

test(1B)

tftp(1)

time(1)

timemanp(1)

times(1)

timesysp(1)

timex(1)

tip(1)

touch(1)

touch(1B)

tplot(1)

tput(1)

tr(1)

tr(1B)

trap(1)

troff(1)

true(1)

truss(1)

tset(1B)

tsort(1)

tty(1)

type(1)

typeset(1)

ul(1)

ulimit(1)

umask(1)

unalias(1)

uname(1)

uncompress(1)

unexpand(1)

unget(1)

unhash(1)

unifdef(1)

uniq(1)

units(1)

unix2dos(1)

unlimit(1)

unpack(1)

unset(1)

unsetenv(1)

until(1)

updatehome(1)

uptime(1)

userattr(1)

users(1B)

uucp(1C)

uudecode(1C)

uuencode(1C)

uuglist(1C)

uulog(1C)

uuname(1C)

uupick(1C)

uustat(1C)

uuto(1C)

uux(1C)

vacation(1)

val(1)

valdate(1)

valgid(1)

valint(1)

valpath(1)

valrange(1)

valstr(1)

valtime(1)

valuid(1)

valyorn(1)

vc(1)

vedit(1)

ver(1)

vgrind(1)

vi(1)

view(1)

vipw(1B)

volcheck(1)

volrmmount(1)

w(1)

wait(1)

wc(1)

what(1)

whatis(1)

whence(1)

whereis(1B)

which(1)

while(1)

who(1)

whoami(1B)

whocalls(1)

whois(1)

write(1)

xargs(1)

xgettext(1)

xstr(1)

yacc(1)

yes(1)

ypcat(1)

ypmatch(1)

yppasswd(1)

ypwhich(1)

zcat(1)

zlogin(1)

zonename(1)

zonestat(1)

ドキュメントの品質向上のためのご意見をください
簡潔すぎた
読みづらかった、または難し過ぎた
重要な情報が欠けていた
内容が間違っていた
翻訳版が必要
その他
Your rating has been updated
貴重なご意見を有り難うございました!

あなたの貴重なご意見はより良いドキュメント作成の手助けとなります 内容の品質向上と追加コメントのためのアンケートに参加されますか?

ld

- オブジェクトファイル用リンカー

形式

ld [-32 | -64] [-Bdirect | nodirect] [-B dynamic | static]
[-B eliminate[=mode] | local[=mode]] [-B reduce] [-c name]
[-C] [-D [!]token1,[!]token2,...] [-e epsym]
[-f name | -F name] [-G] [-h name] [-i] [-l x] [-L path]
[-m] [-M mapfile] [-N string] [-o outfile] [-p auditlib]
[-P auditlib] [-Q y | n] [-r] [-R path] [-s]
[-S supportlib] [-t] [-u symname] [-V] [-Y P,dirlist]
[-z allextract | defaultextract | weakextract ]
[-z altexec64] [-z aslr[=mode]] [-z ancillary[=outfile]] 
[-z assert-deflib[=libname]] [-z deferred | nodeferred]
[-z defs | nodefs] [-z direct | nodirect]
[-z discard-unused=item1,item2,...] [-z endfiltee]
[-z fatal-warnings | nofatal-warnings] [-z finiarray=function]
[-z globalaudit] [-z guidance[=item1,item2,...]] [-z help ]
[-z ignore | record] [-z initarray=function] [-z initfirst]
[-z interpose] [-z lazyload | nolazyload]
[-z ld32=arg1,arg2,...] [-z ld64=arg1,arg2,...]
[-z loadfltr] [-z mapfile-add=name] [-z muldefs]
[-z nocompstrtab] [-z nodefaultlib] [-z nodelete]
[-z nodlopen] [-z nodump] [-z noldynsym] [-z nopartial]
[-z origin] [-z parent=object] [-z preinitarray=function]
[-z relaxreloc] [-z rescan-now] [-z rescan-start ... -z rescan-end]
[-z strip-class=[!]class1,[!]class2,...] [-z stub]
[-z symbolcap] [-z target=sparc|x86]
[-z text | textwarn | textoff] [-z verbose] [-z wrap=symbol]
filename ...

機能説明

リンカー ld は、シンボル定義へのシンボル参照を解決し、再配置を実行することによって再配置可能オブジェクトファイルを結合します。いずれの場合も、ld のデフォルトの出力は a.out ファイルとなります。「注意事項」を参照してください。

ld には、多数のオプションがあります。現代的なプログラミング習慣に関連するオプションは「形式」で定義され、以降のセクションで説明されています。その他のオプションは一般にはあまり使用されず、「セカンダリオプション」セクションで説明されています。

ld は、動的または静的の 2 つのモードのどちらかで動作します。動的モードがデフォルトですが、このモードは -r または -d オプションで管理できます。動的モードでは、引数として提供される再配置可能オブジェクトファイルが結合されて、動的実行可能ファイルが生成されます。このファイルは、実行時に、引数として指定した共有オブジェクトファイルに結合されます。-G オプションを指定した場合、再配置可能オブジェクトファイルが結合され、共有オブジェクトファイルが生成されます。この動的リンク環境では、リンカーと実行時リンカー ld.so.1(1) の作業が密接に結び付けられます。これらのユーティリティーはどちらも、関連テクノロジおよびユーティリティーと合わせて『リンカーとライブラリ』で広範囲にわたり説明されています。

静的モードでは、-r オプションにより、引数として提供される再配置可能オブジェクトファイルが結合されて 1 つの再配置可能オブジェクトファイルが生成されます。Oracle Solaris オペレーティングシステムの最新のバージョンは、静的実行可能ファイルの作成をサポートしていません。Static Executablesを参照してください。このセクションのすべての説明は動的リンク、または -r オプションを指定した静的リンクを前提にしています。

いずれかの引数がライブラリである場合、ld はデフォルトでは、コマンド行でそのライブラリが検出された時点でそのライブラリを 1 回だけ検索します。ライブラリとして指定できるのは、共有オブジェクトまたは再配置可能アーカイブのどちらかです。ar.h(3HEAD) を参照してください。

共有オブジェクトは不可分の完全なユニットで、1 つ以上の入力ファイルをリンクすることによって生成されます。リンカーが共有オブジェクトを処理すると、共有オブジェクトの全内容は、その結果作成された出力ファイルイメージの論理的な部分になります。共有オブジェクトが実際に取り込まれるのはプロセスの実行時であるため、リンク処理中に物理的なコピー処理が行われることはありません。この論理的な組み込みは、リンク編集プロセスにとって共有オブジェクト内に定義されたすべてのシンボルエントリが利用可能になることを意味しています。『リンカーとライブラリ』の第 4 章「共有オブジェクト」を参照してください。

アーカイブライブラリの場合、ld は、未解決の外部参照を定義するアーカイブメンバーのみをロードします。ld は、アーカイブメンバーが満足できる外部参照を解決するために、アーカイブライブラリのシンボルテーブルを順番に検索します。この検索は、アーカイブで外部参照を解決できなくなるまで繰り返されます。そのため、同じ外部シンボルを定義する複数のアーカイブメンバーが存在しないかぎり、ライブラリ内のメンバーの順序は機能的に重要ではありません。相互依存関係を持つアーカイブライブラリでは、複数のコマンド行定義、またはいずれかの -z rescan オプションの使用が必要になる場合があります。『リンカーとライブラリ』の「アーカイブ処理」を参照してください。

ld はクロスリンカーで、SPARC または x86 ターゲットに対して 32 ビットオブジェクトまたは 64 ビットオブジェクトをリンクできます。ld の操作モードは、コマンド行の最初の再配置可能オブジェクトの ELF クラスおよび機械タイプによって制御されます。32 ビットオブジェクトと 64 ビットオブジェクトを混在させることはできません。同様に、1 つの機械タイプのオブジェクトのみが許可されます。-32-64 および -z target オプションと LD_NOEXEC_64 環境変数を参照してください。

静的実行可能ファイル

静的実行可能ファイルは、多くのリリースで作成しないように勧められています。実際、Solaris では、64 ビットのシステムアーカイブライブラリが提供されたことはありません。静的実行可能ファイルは、システムアーカイブライブラリに反して構築されるので、実行可能ファイルにはシステム実装の詳細が含まれます。この自己内包には、多数の欠点があります。

Oracle Solaris 10 から、32 ビットのシステムアーカイブライブラリは提供されなくなりました。これらのライブラリ (特に、libc.a) がなくなるため、特別なシステム知識がなければ、静的実行可能ファイルは作成できません。ただし、静的リンクオプションを処理する ld の機能とアーカイブライブラリの処理に変更はありません。

オプション

以下のオプションがサポートされています。

-32 | -64

32 ビットまたは 64 ビットオブジェクトを作成します。

デフォルトでの生成されるオブジェクトのクラスは、コマンド行から処理される最初の ELF オブジェクトによって決まります。オブジェクトを指定してしない場合、クラスは、コマンド行から処理される最初のアーカイブ内で検出された最初のオブジェクトによって決まります。オブジェクトもアーカイブもない場合、リンカーは 32 ビットオブジェクトを作成します。

-64 オプションは、64 ビットオブジェクトを mapfile からのみ作成する場合に必要です。

-32 または -64 オプションは、32 ビットと 64 ビットのオブジェクトが混在するアーカイブからすべてをリンクするというごくまれな場合にも使用できます。アーカイブの最初のオブジェクトが、作成される必要のあるオブジェクトのクラスではない場合、-32 または -64 オプションを使用してリンカーに指示できます。

-B direct | nodirect

これらのオプションで直接結合を制御します。-B direct は、シンボル参照と、シンボル定義を提供する依存関係との間の関係を記録することによって、直接結合情報を確立します。さらに、直接結合情報は、シンボル参照と、作成されるオブジェクト内の関連付けられた定義の間で確立できます。実行時リンカーは、デフォルトのシンボル検索を行わずに、この情報を使用して、関連付けられたオブジェクト中のシンボルを直接検索します。

直接結合情報は、リンク編集で指定される依存関係に対してのみ確立されます。そのため、-z defs オプションも追加するようにしてください。直接結合環境でシンボルに対して割り込もうとするオブジェクトは、-z interpose オプションにより、自身をインターポーザーとして識別するべきです。-B direct を使用すると、-z lazyload もすべての依存関係に対して有効になります。

-B nodirect オプションは、作成されているオブジェクトによって提供されるインタフェースとの直接結合をすべて回避させます。-z direct オプションを指定すると、作成されているオブジェクトは外部インタフェースと直接結合を続けられます。『リンカーとライブラリ』の第 9 章「直接結合」を参照してください。

-B dynamic | static

これらのオプションによって、ライブラリの取り込みが管理されます。-B dynamic は、-l オプションのライブラリ検索が共有オブジェクトとアーカイブライブラリ名に展開されるように許可します。このオプションはデフォルトであり、動的モードでのみ有効です。-B static は、-l オプションのライブラリ検索がアーカイブライブラリ名にのみ展開されるように制限します。これらのオプションは、トグルとしてコマンド行で何回でも指定できます。-B static オプションが指定されている場合は、-B dynamic が見つかるまで、共有オブジェクトは受け入れられません。-l オプションを参照してください。

-B eliminate[=mode] | local[=mode]

デフォルトではグローバル結合になるシンボルがすべて、シンボルテーブルから削除されるか、またはローカルな可視性に削減されます。STV_DEFAULT 可視性を持つグローバルシンボルは、リンカーによって、より制限的な可視性に削減される場合があります。その他のすべての STV_ 可視性を持つグローバルシンボルは、明示的な可視性を持っていると見なされます。明示的な可視性はリンカーによって尊重され、変更することはできません。『リンカーとライブラリ』の「SYMBOL_SCOPE/SYMBOL_VERSION 指令」を参照してください。シンボルの可視性は、コンパイラ指令を使用して、あるいはバージョンまたはインタフェース定義を定義する mapfiles を使用して明示的に定義できます。

Mapfile バージョンおよびインタフェース定義には、auto-elimination または auto-reduction 指令を含めることができます。『リンカーとライブラリ』の「SYMBOL_SCOPE/SYMBOL_VERSION 指令」を参照してください。これらの指令を指定すると、mapfile で明示的に定義されていないシンボル、または明示的な可視性を定義していないシンボルがそれぞれ、削除されるか、またはローカルに削減されます。以降の段落で説明されているように、シンボルの削除または削減は、すべての明示的なシンボル定義に加えて、生成されるオブジェクトのタイプによっても影響を受けます。-B eliminate オプションは、mapfile auto-elimination 指令と同じシンボル削除を要求します。-B local オプションは、mapfile auto-reduction 指令と同じシンボル削減を要求します。

どちらのオプションも、削除または削減されるグローバルシンボルの選択を制御するために、external または noexternal のモードで修飾できます。リンカーはデフォルトで、生成されるオブジェクトのタイプに適したモード (実行可能ファイルの場合は external、共有オブジェクトの場合は noexternal) になるため、この微調整は通常は必要ありません。

動的オブジェクトを構築するときは、一部のシンボルを確実にグローバルのままにして、外部の依存関係から参照可能にすることが必要になる場合があります。これは特に、動的実行可能ファイルの場合に当てはまります。実行可能ファイルを構築するときは、実行時のプロセス初期化を可能にするコンパイル環境によって再配置可能オブジェクトが提供されます。これらの再配置可能オブジェクトには、システムの依存関係から参照されるグローバルシンボルを含めることができます。これらのシンボルは、実行時の実行を損なわないように、シンボルの自動削除または自動削減手法には関係なくグローバルのままになるようにするべきです。

modeexternal として定義すると、外部の依存関係からのいずれかのシンボル参照が、構築されるオブジェクト内のシンボル定義に結合される可能性があるかどうかを判定するために、外部のすべての依存関係が分析されます。このような結合を満たすグローバルシンボルが削除されたり、ローカルに削減されたりすることはありません。動的実行可能ファイルを生成する場合は、このモードがデフォルトです。

modenoexternal として定義すると、外部のすべての依存関係の分析が回避され、mapfile で明示的に定義されていない、または明示的な可視性を定義していないすべてのシンボルが削減されます。共有オブジェクトを生成する場合は、このモードがデフォルトです。

-B reduce オプションも参照してください。

-B reduce

再配置可能オブジェクトを生成している場合は、いずれかのシンボル可視性属性によって、あるいはバージョンまたはインタフェース定義を定義する mapfiles を使用して定義されたシンボル情報が削減されます。デフォルトでは、再配置可能オブジェクトが生成される場合、可視性属性、バージョン定義、またはインタフェース定義は出力イメージにのみ記録されます。動的実行可能ファイルまたは共有オブジェクトを作成する場合は、可視性属性、あるいは mapfile バージョンまたはインタフェース定義は常に、すべてのシンボル情報に適用されます。

-c name

実行時に使用する構成ファイル name を記録します。構成ファイルは、デフォルト検索パスの変更やディレクトリキャッシュの提供に使用されるほか、代替オブジェクトの依存関係を提供します。crle(1) を参照してください。

-C

診断メッセージに表示される C++ シンボル名を復号化します。

-D [!」]token1,[!]token2,...

token に指定したデバッグ情報を標準エラーに出力します。help は、使用可能なトークンをすべて指定した場合と同じ意味を持つ特殊なトークンです。『リンカーとライブラリ』の「デバッグ支援」を参照してください。

-e epsym
--entry epsym

出力ファイルのエントリポイントのアドレスとして、シンボル epsym に設定します。

-f name
--auxiliary name

共有オブジェクトを構築するときにのみ使用されます。このオプションを指定すると、共有オブジェクトのシンボルテーブルが、name に指定した共有オブジェクトのシンボルテーブルで、補助フィルタとして使用されるようになります。このオプションは複数回指定できますが、本オプションは -F と同時に指定することはできません。『リンカーとライブラリ』の「補助フィルタの生成」を参照してください。

-F name
--filter name

共有オブジェクトを構築するときにのみ使用されます。このオプションを指定すると、共有オブジェクトのシンボルテーブルが、name に指定した共有オブジェクトのシンボルテーブルで、フィルタとして使用されるようになります。このオプションは複数回指定できますが、本オプションは -f と同時に指定することはできません。『リンカーとライブラリ』の「標準フィルタの生成」を参照してください。

-G
-shared

動的モード専用です。共有オブジェクトを生成します。未定義のシンボルも許容されます。『リンカーとライブラリ』の第 4 章「共有オブジェクト」を参照してください。

-h name
--soname name

動的モード専用です。共有オブジェクトの作成時、name をオブジェクトの動的セクションに記録します。ファイルシステムにおけるオブジェクトの名前ではなく、name がこのオブジェクトにリンクされた任意の動的オブジェクトに記録されます。このため、実行時リンカーは、実行時に検索する共有オブジェクト名として name を使用します。『リンカーとライブラリ』の「共有オブジェクト名の記録」を参照してください。

-i

LD_LIBRARY_PATH の設定を無視します。LD_LIBRARY_PATH の設定がリンク処理の妨げになる場合は、このオプションを使用して、実行時のライブラリ検索への影響を防ぎます。

-l x
--library x

ライブラリ libx.so (共有オブジェクトの慣例的な名前) または libx.a (アーカイブライブラリの慣例的な名前) を検索します。動的モードでは、-B static オプションが有効になっている場合を除けば、ライブラリ検索パスに指定された各ディレクトリ内で、libx.so ファイルまたは libx.a ファイルが検索されます。ディレクトリ検索は、どちらかのファイルが入っているディレクトリを検出した時点で終了します。-lx が、libx.solibx.a という形式の名前を持つ 2 つのファイルに展開される場合、.so ファイルが選択され、libx.so が見つからない場合は libx.a が選択されます。静的モードを使用している場合や -B static オプションが有効になっている場合は、.a ファイルだけが選択されます。ld は、ライブラリの名前を検出した時点でライブラリの検索を実行するので、-l の位置は重要な意味を持ちます。『リンカーとライブラリ』の「追加ライブラリとのリンク」を参照してください。

-L path
--library-path path

path をライブラリ検索ディレクトリに追加します。ld のライブラリ検索は、まず -L オプションで指定したディレクトリで行われ、次に標準ディレクトリで行われます。このオプションは、同一コマンド行の -l オプションより前に指定した場合のみ有効です。-『リンカーとライブラリ』の「リンカーが検索するディレクトリ」を参照してください。

環境変数 LD_LIBRARY_PATH はライブラリ検索パスの補完に使用できますが、実行時環境によっても解釈されるため、-L オプションを使用することをお勧めします。「環境変数」の「LD_LIBRARY_PATH」を参照してください。

-m

メモリーマップ (入出力セクションのリスト) と、致命的ではない多重定義シンボルを生成し、標準出力に出力します。

-M mapfile

マップファイル mapfile を、ld への指令が記述されているテキストファイルとして読み取ります。このオプションは複数回指定できます。mapfile がディレクトリの場合、stat(2) で定義されるように、そのディレクトリ内のすべての通常ファイルが処理対象になります。『リンカーとライブラリ』の付録 B「System V Release 4 (バージョン 1) Mapfile」を参照してください。マップファイルの例は、/usr/lib/ld にあります。「ファイル」を参照してください。

-N string

このオプションを指定すると、作成されるオブジェクトの .dynamic セクションに DT_NEEDED エントリが追加されます。DT_NEEDED 文字列の値はコマンド行で指定した string です。このオプションは位置に依存します。このため、DT_NEEDED .dynamic エントリはリンク行にあるほかの動的な依存オブジェクトに対して相対的になります。デバイスドライバの再配置可能オブジェクト間の依存関係を指定するときに、このオプションをオプション -dy および -r と組み合わせて使用すると便利です。

-o outfile
--output outfile

outfile という名前の出力オブジェクトファイルを生成します。デフォルトのオブジェクトファイル名は、a.out です。

-p auditlib

監査ライブラリ auditlib を識別します。このライブラリは、作成されたオブジェクトの実行時に行われる監査に使用されます。自分自身の監査を行うような共有オブジェクトと依存関係にあるオブジェクトは、この共有オブジェクトの性質を継承し、自分自身の監査を行います- (-P オプションを参照)。『リンカーとライブラリ』の「実行時リンカーの監査インタフェース」を参照してください。

-P auditlib

監査ライブラリ auditlib を識別します。このライブラリは、作成されたオブジェクトの実行時に行われる依存関係の監査に使用されます。この監査は、このオブジェクトと依存関係にあり、監査を行う必要があるオブジェクトから継承される場合もあります-p オプションと -z globalaudit オプションを参照してください。『リンカーとライブラリ』の「実行時リンカーの監査インタフェース」を参照してください。

-Q y | n

-Q y を指定すると、ident 文字列が、出力ファイルの .comment セクションに追加されます。この文字列は、ファイル作成に使用された ld のバージョンを識別します。このため、ld -r を使用した場合など、複数のリンク手順を経て作成されたファイルには、複数の ld idents があることになります。この識別は、cc コマンドのデフォルト時の動作と同じです。-Q n は、バージョンの識別を抑止します。.comment セクションは mcs(1) ユーティリティーで操作できます。

-r
--relocatable

複数の再配置可能オブジェクトファイルを結合して、1 つの再配置可能オブジェクトを生成します。ld は、未解決の参照があってもメッセージを出力しません。このオプションは、-a と同時には使用できません。

-R path
-rpath path

複数のディレクトリをコロンで区切って指定します。このリストは、実行時リンカーにライブラリ検索ディレクトリを指定する際に使用されます。NULL 以外の文字列は、出力オブジェクトファイルに記録され、実行時リンカーに渡されます。このオプションを複数回指定する場合と、コロンで区切って path を指定する場合の結果は同じになります。『リンカーとライブラリ』の「実行時リンカーが検索するディレクトリ」を参照してください。

関連オブジェクト内で runpath を使用する方が、LD_LIBRARY_PATH 環境変数を使用するなどの方法でグローバル検索パスを設定するよりも適切です。オブジェクトの依存関係を探すために必要な runpaths のみ記録するようにしてください。ldd(1)-U オプションとともに使用すると、動的オブジェクト内の未使用の runpaths を探すこともできます。

また、runpath で提供されるさまざまなトークンを使用すると、システムの機能やオブジェクトの位置を柔軟に識別できます。『リンカーとライブラリ』の第 6 章「動的ストリングトークンによる依存関係の確立」を参照してください。$ORIGIN トークンは、動的オブジェクトをファイルシステム内の別の場所に再配置できるようにする場合に特に役立ちます。

-s
--strip-all

出力ファイルからシンボル情報をすべて取り除きます。このオプションは、-z strip-class オプションを debugsymbol クラス識別子とともに使用することと同等です。-z redlocsym および -z noldynsym オプションも参照してください。

-S supportlib

ld によって共有オブジェクト supportlib が読み込まれ、リンクプロセスに関する情報が提供されます。-S オプションを使用して定義された共有オブジェクトは、SGS_SUPPORT 環境変数を使用して提供することもできます。『リンカーとライブラリ』の「リンカーのサポートインタフェース」を参照してください。

-t

サイズの異なる多重定義シンボルを検出した場合の警告の出力を抑止します。

-u symname
--undefined symname

symname を、未定義シンボルとしてシンボルテーブルに入力します。このオプションは、すべてのルーチンをアーカイブライブラリから読み込む場合に便利です。これは、最初のルーチンを読み込むために、未解決の参照が必要になるからです。コマンド行内でのこのオプションの位置は重要な意味を持ち、シンボルを定義するライブラリより前に配置する必要があります。『リンカーとライブラリ』の「-u オプションを使用した追加シンボルの定義」を参照してください。

-V
--version

使用する ld のバージョン情報を示すメッセージを出力します。

-Y P,dirlist

ライブラリ検索に使用するデフォルトのディレクトリを変更します。dirlist には、複数のパスをコロンで区切って指定します。

-z allextract | defaultextract | weakextract
--whole-archive | --no-whole-archive

後続のすべてのアーカイブのオブジェクトの抽出条件を変更します。デフォルトでは、アーカイブメンバーは、未定義の参照を解決し、データ定義による仮の定義を行うために抽出されます。弱いシンボル参照は抽出を行いません。-z allextract または --whole-archive オプションでは、すべてのアーカイブメンバーがアーカイブから抽出されます。-z weakextract を指定すると、弱い参照によってアーカイブの抽出が行われます。-z defaultextract または --no-whole-archive オプションを指定すると、すでに指定されている抽出オプションを無効にし、デフォルトの状態に戻すことができます。『リンカーとライブラリ』の「アーカイブ処理」を参照してください。

-z altexec64

64 ビットの ld を実行します。これまでは、実行されたリンカーのクラスは、作成された ELF オブジェクトのクラスによって決まっていました。現在では、実行されるリンカーのクラスは、ベースとなるシステムのクラスによって決まります。通常は 64 ビットです。このオプションは、下位互換性を確保するために残されています。

-z ancillary[=outfile]

通常は出力オブジェクトに追加される割り当て不可能なすべてのセクションを受信する補助的な出力ファイルを指定します。割り当て不可能なセクションは実行時には必要なく、主にデバッガやその他の可観測性ツールで使用されます。outfile が存在する場合は、指定された名前を使用して補助的なファイルが作成されます。outfile が存在しない場合、補助的なファイルにはプライマリ出力ファイルと同じ名前が与えられ、.anc 接尾辞が追加されます。『リンカーとライブラリ』の第 2 章「リンカー」を参照してください。

補助的なオブジェクトは、実行可能オブジェクトと共有オブジェクトでのみサポートされます。再配置可能オブジェクトを構築するために -r オプションが指定されている場合は、-z ancillary オプションを使用できません。-z ancillary オプションは、-z stub オプションと組み合わせて使用されている場合、何も出力せずに無視されます。また、outfile なしで指定され、-o オプションで指定された出力ファイルが /dev/null などのデバイス特殊ファイルである場合の -z ancillary オプションも無視されます。

-z aslr[=mode]

実行可能ファイルのアドレス空間配置のランダム化 (ASLR) 動作を指定します。モード値は、enabled または disabled に設定できます。モードを省略した場合、ASLR は有効になります。

-z assert-deflib[=libname ]

-l コマンド行オプションで指定したライブラリに対して、リンカーで指定したデフォルト検索パスの検査によって検出される警告メッセージを有効にします。libname の値を指定するとデフォルトのライブラリ警告機能が有効になり、指定したライブラリが、警告を出力しないライブラリの一覧に追加されます。複数の -z assert-deflib オプションを指定すると、警告を出力してはいけないライブラリを複数指定できます。

libname の値は、リンカーで検出されたときのように、パスコンポーネントのないライブラリファイル名にする必要があります。たとえば、次のように指定すると、デフォルトのライブラリ警告が有効になり、標準 C ライブラリが除外されます。

ld ... -z assert-deflib=libc.so ...

-z assert-deflib は、同名のオブジェクトが複数存在し、使用ライブラリを厳密に管理する必要がある構築環境を主に対象とした特殊なオプションです。このオプションは、一般的な用途向けではありません。

-z deferred | nodeferred

動的依存関係への遅延の印の付加を有効または無効にします。遅延の印を付けられた動的依存関係にはレイジー読み込み可能の印も付けられ、初期プロセスの起動では読み込まれません。遅延依存関係の読み込みは、そのレイジー参照への結合がはじめて行われたときに行われます。基本的なレイジー読み込み可能な依存関係とは異なり、遅延依存関係は LD_BIND_NOW プロセスの一部として、または RTLD_NOW フラグが設定された dlopen(3C) を介して処理されることはありません。『リンカーとライブラリ』の「動的依存関係の遅延読み込み」を参照してください。

遅延依存関係を dlsym(3C) および RTLD_PROBE ハンドルとともに使用すると、自然なコーディングスタイルを使用して柔軟な方法で機能テストを実行できます。

-z defs | nodefs
--no-undefined

-z defs オプションと --no-undefined オプションは、リンク終了時に未定義のシンボルがあると、致命的エラーを強制的に出力します。これは、実行可能オブジェクトを作成する場合のデフォルトの設定ですが、歴史的経緯から、共有オブジェクトを作成する場合にはデフォルトではありません。共有オブジェクト作成時に、そのオブジェクトが自己完結していることを確認できるため、-z defs オプションを使用することをお勧めします。自己完結しているオブジェクトでは、シンボル参照がそのオブジェクト内またはそのオブジェクトの依存関係の中で解決されています。

-z nodefs オプションは、未定義のシンボルを許可します。歴史的経緯から、共有オブジェクトを作成する場合には、この動作がデフォルトになっています。このオプションを実行可能ファイルに対して指定した場合の、未定義のシンボルに対する参照の動作は不確定です。-z nodefs オプションを使用することは、お勧めしません。

-z direct | nodirect

コマンド行であとに続くすべての依存関係への直接結合を有効または無効にします。このオプションにより、対応するグローバルなオプション -B direct よりも直接結合を効率よく制御できます。-z direct オプションは、次の点で -B direct オプションとも異なります。直接結合の情報は、シンボル参照と作成されたオブジェクト内で関連付けられた定義の間では確立されません。レイジー読み込みは無効です。

-z discard-unused= item1,item2,...

デフォルトでは、リンカーは、未使用の空のセクションを破棄します。その他のカテゴリの入力素材は、リンク編集中に、未使用であると判定できます。-z discard-unused オプションを使用すると、このような項目の自動削除が可能になります。次の item トークンが認識されます。

セクション

未使用のセクションは、リンク編集から作成された出力ファイルから破棄されます。

ファイル

未使用の再配置可能オブジェクトファイルは、リンク編集から作成された出力ファイルから破棄されます。

入力の再配置可能オブジェクトファイルは、その再配置可能オブジェクトによって提供されるすべての割り当て可能セクションが未使用である場合に、未使用であると判定されます。-z guidance オプションの「必須でない再配置可能オブジェクトファイル」の説明も参照してください。

依存関係

未使用の、明示的な、共有オブジェクトの依存関係は、リンク編集から作成された出力ファイル内に記録されません。

明示的な依存関係とは、パス名を使用して、またはより一般には -l オプションを使用してコマンド行で定義された依存関係のことです。明示的な依存関係がほかのオブジェクトに依存する場合があり、これを暗黙の依存関係と呼びます。明示的な依存関係は、2 つの条件が満たされた場合に、未使用であると判定されます。

  • この依存関係によって提供されるグローバルシンボルが、構築されるオブジェクトから参照されていない。

  • この依存関係が、どの暗黙の依存関係の要件も補償していない。

-z guidance オプションの「必須でない、または補償している依存関係」の説明も参照してください。

none

未使用の処理 (未使用の空のセクションを削除するデフォルトのアクションを含む) をすべて無効にします。

『Oracle Solaris 11.1 リンカーとライブラリガイド』の「使用されない対象物の削除」も参照してください。

-z endfiltee

フィルタ処理の対象オブジェクトに印をつけます。フィルタによる検索処理は、このオブジェクトを検出した時点で終了します。『リンカーとライブラリ』の「「フィルティー」検索の縮小」を参照してください。

-z fatal-warnings | nofatal-warnings
--fatal-warnings | --no-fatal-warnings

-z fatal-warnings--fatal-warnings オプションを指定すると、リンカーは警告を致命的エラーとして扱います。

-z nofatal-warnings--no-fatal-warnings オプションを指定すると、リンカーは警告を致命的でないエラーとして扱います。これはデフォルトの動作です。

-z finiarray=function

構築するオブジェクトの .fini_array セクションにエントリを追加します。.fini_array セクションが存在しない場合は、1 つのセクションを新たに作成します。追加されたエントリは function を指すように初期化されます。『リンカーとライブラリ』の「初期設定および終了セクション」を参照してください。

-z globalaudit

このオプションは、-P オプションを使用して記録された監査ライブラリの定義を補足します。このオプションは、動的実行可能ファイルの構築時にのみ意味を持ちます。-P オプションを使用してオブジェクト内で定義された監査ライブラリを使用すると、通常、そのオブジェクトの直接の依存関係を監査できます。 -z globalaudit は、監査者をグローバルな監査者に昇格させることによって、すべての依存関係を監査できるようにします。『リンカーとライブラリ』の「監査インタフェースの呼び出し」を参照してください。

-P オプションと -z globalaudit オプションを使用して確立された監査者は、LD_AUDIT 環境変数を使用して確立された監査者と同等です。ld.so.1(1) を参照してください。

-z guidance[=item1,item2,...]

生成されるオブジェクトの品質を高めるか、それ以外のメリットがあると考えられる ld オプションを提案するガイダンスメッセージを表示します。提供される個々のガイダンスは、システムの進化に伴って変更される可能性があります。古いバージョンの ld で提供されていた廃止済みのガイダンスは、新しいバージョンでは削除されることがあります。同様に、新しいガイダンスが新しいバージョンの ld に追加されることがあります。したがって、ガイダンスには常に最新のベストプラクティスが表示されます。

ガイダンスを有効にすると同時に特定のガイダンスメッセージが表示されないようにするには、表示しないガイダンスのクラスを示す item トークンの一覧を指定します。これにより、不要なアドバイスは表示されなくなりますが、それ以外のガイダンスは活用できます。ld は認識されない item トークンを何も出力せずに無視するため、指定した ld コマンド行を新旧さまざまなバージョンの Solaris で実行できます。

現在のバージョンの ld で提供されるガイダンスと、これらのメッセージを無効にするために使用する item トークンは次のとおりです。

必要な依存関係を指定する

動的実行可能ファイルと共有オブジェクトでは、必要とする依存関係をすべて明示的に定義する必要があります。ガイダンスでは、動的オブジェクトの作成時にシンボル参照が不十分な場合には、-z defs オプションの使用を推奨しています。このガイダンスは、-z guidance=nodefs で無効にできます。

必須でない、または補償している依存関係を指定しない

動的実行可能ファイルおよび共有オブジェクトは、動的オブジェクトによって作成されたシンボル参照を満たさない明示的な依存関係を定義してはいけません。ガイダンスでは、必須でない、または未使用の依存関係を削除するよう推奨しています。未使用の依存関係は、2 つのカテゴリのいずれかに分類できます。

  • シンボル参照を満たさない明示的な依存関係。

  • 構築される動的オブジェクトからのシンボル参照を満たさないが、暗黙の依存関係を補償している明示的な依存関係。-z discard-unused オプションの「依存関係」の説明を参照してください。

これらのどちらのカテゴリのガイダンスも、-z guidance=nounused-dependencies または同義語の -z guidance=nounused で無効にできます。補償している依存関係のガイダンスは、-z guidance=nounused-compensators で無効にできます。

『Oracle Solaris 11.1 リンカーとライブラリガイド』の「使用されない対象物の削除」も参照してください。

必須でない再配置可能オブジェクトファイルを指定しない

作成される出力ファイルには、リンク編集に関与しているその他のオブジェクトによって割り当て可能セクションが参照されない再配置可能オブジェクトからのどのような情報も含まれていてはいけません。ガイダンスでは、未使用の再配置可能オブジェクトを削除するよう推奨しています。このガイダンスは、-z guidance=nounused-files で無効にできます。

『Oracle Solaris 11.1 リンカーとライブラリガイド』の「使用されない対象物の削除」も参照してください。

レイジー読み込み

レイジー読み込みでは依存関係を識別する必要があります。ガイダンスでは、-z lazyload または -z nolazyload オプションが出現する前にすべての依存関係が処理される場合、-z lazyload オプションの使用を推奨しています。このガイダンスは、-z guidance=nolazyload で無効にできます。

直接結合

直接結合を使用して依存関係を参照する必要があります。ガイダンスでは、-B direct-z direct オプションのどちらか、または -z nodirect オプションが出現する前に依存関係が処理される場合、B direct と z direct のどちらかのオプションの使用を推奨しています。このガイダンスは、-z guidance=nodirect で無効にできます。

ピュアテキストセグメント

動的オブジェクトでは、書き込み不可で割り当て可能なセクションに再配置を行なってはいけません。ガイダンスでは、テキストセグメントに対して再配置が残っていて、-z textwarn オプションも -z textoff オプションも検出されない場合、位置独立コード (PIC) でのオブジェクトのコンパイルを推奨しています。このガイダンスは、-z guidance=notext で無効にできます。

Mapfile の構文

すべての mapfile は、バージョン 2 の mapfile 構文を使用する必要があります。ガイダンスでは、バージョン 1 の構文を使用する mapfile が検出された場合、バージョン 2 の構文の使用を推奨しています。このガイダンスは -z guidance=nomapfile で無効にできます。

ライブラリ検索パス

ld によって不適切な依存関係が検出されると、何も出力されずに無視されます。たとえば、64 ビットのオブジェクト生成時に検出された 32 ビットの依存関係は無視されます。このような依存関係は、誤った -L オプションが設定されるなど、検索パスの設定が正しくないことから生じる可能性があります。この依存関係があっても問題ではありませんが、この依存関係を処理する必要はなく、解決の必要がある作成時の問題が隠れてしまうおそれがあります。ガイダンスでは、不適切な依存関係はすべて削除することを推奨しています。このガイダンスは、-z guidance=nolibpath で無効にできます。

また、-z guidance=noall でガイダンス機能をすべて無効にできます。より適切なオブジェクトを構築するためのガイダンスとアドバイスについての詳細は、『リンカーとライブラリ』の第 7 章「リンカーのクイックリファレンス」を参照してください。

-z help
--help

標準出力にコマンド行オプションのサマリーを出力して終了します。

-z ignore | record

リンク編集の一部として参照されない共有オブジェクトの依存関係を無視または記録します。

-z ignore および -z record は、コマンド行で検出された参照されない依存関係の ld での処理方法を切り替えるために使用される定位置オプションです。-z ignore が検出されると、以降の参照されない依存関係はすべて、何も出力せずに無視されます。-z record が検出されると、依存関係が参照されるかどうかには関係なく、すべての依存関係が記録されます。

デフォルトでは、依存関係が参照されるかどうかには関係なく、ld はすべての依存関係を記録します。定位置でない -z discard-unused=dependencies オプションを使用すると、この初期のデフォルトを変更できます。初期設定が確立されたあとは、-z ignore および -z record を使用してデフォルトの動作を変更できます。

-z initarray=function

構築するオブジェクトの .init_array セクションにエントリを追加します。.init_array セクションが存在しない場合は、1 つのセクションを新たに作成します。追加されたエントリは function を指すように初期化されます。『リンカーとライブラリ』の「初期設定および終了セクション」を参照してください。

-z initfirst

オブジェクトの実行時初期設定が完了してから、ほかのオブジェクトの実行時初期設定を同時処理します。また、同時プロセスから除去されたほかのすべてのオブジェクトの実行時最終設定が完了してから、オブジェクトの実行時最終設定が行われるようにします。このオプションは共有オブジェクトの作成時にのみ有用です。

-z interpose

直接結合よりも優先して検索するオブジェクトを指定します。実行時に、-z interpose オプションでオブジェクトにタグが付けられている場合、そのオブジェクトは明示的な割り込みとして識別されます。明示的な割り込みは、オブジェクトが LD_PRELOAD 環境変数を使用して読み込まれたときにも設定されます。オブジェクトの読み込み順序が原因で暗黙的な割り込みが発生することがありますが、この暗黙的な割り込みは実行時リンカーにとっては未知のものです。明示的な割り込みでは、オブジェクトの読み込み順序にかかわらず割り込みを発生させることができます。また、直接結合が有効な場合には、明示的な割り込みによって、実行時リンカーが任意の明示的な割り込み内でシンボルを検索できるようになります。

-z lazyload | nolazyload

遅延して読み込まれる動的な依存オブジェクトの指定を有効または無効にします。lazyload と指定された動的な依存オブジェクトは、初期プロセスの起動では読み込まれません。オブジェクトの読み込みは、はじめてこのオブジェクトへの結合が行われたときに行われます。注: レイジー読み込みには、正しい依存宣言と、プロセス内で使用される動的オブジェクトごとに関連する runpaths が必要です。『リンカーとライブラリ』の「動的依存関係の遅延読み込み」を参照してください。

-z ld32=arg1,arg2,...
-z ld64=arg1,arg2,...

リンカーのクラスは、作成される出力ファイルのクラスおよびリンカーが実行されているオペレーティングシステムの機能によって変わります。-z ld[32|64] オプションでは、すべてのリンカーの引数を定義できます。定義された引数は、それぞれ 32 ビットクラスまたは 64 ビットクラスのリンカーによって解釈のみが行われます。

たとえば、サポートするライブラリがクラスに固有のものである場合に、そのライブラリに正しいクラスを指定するには、次のようにします。

ld ... -z ld32=-Saudit32.so.1 -z ld64=-Saudit64.so.1 ...
-z loadfltr

フィルタ対象が実行時ただちに処理されることを要求するように、フィルタに指定します。通常、フィルタ処理は、シンボル参照がフィルタに結合されたときにはじめて行われます。このフラグを持つオブジェクトの実行時プロセスは、環境変数 LD_LOADFLTR が設定されている場合と同じように動作します。ld.so.1(1) を参照してください。

-z mapfile-add=name

name を既知の mapfile 条件入力式の述部の一覧に追加します。このオプションは、リンカーによって読み取られる最初の mapfile の先頭に次の行を挿入することと同等です。

$mapfile_version 2
$add name

-z mapfile-add で入力された名前を mapfile $if および $elif 指令とともに使用すると、mapfile 入力を条件に応じて処理できます。『リンカーとライブラリ』の第 10 章「mapfile」を参照してください。

-z muldefs
--allow-multiple-definition

複数のシンボル定義を許容します。デフォルトでは、再配置可能オブジェクト間で重複したシンボル定義が発生すると、致命的なエラーになります。ところが、このオプションを指定すると、エラーにはならずに、最初の定義が有効な定義として使用されます。

-z nodelete

実行時に削除できないように、オブジェクトに指定します。このモードは、dlopen(3C)RTLD_NODELETE モードとともに使用してプロセスにオブジェクトを追加する場合と同様です。

-z nodlopen

オブジェクトを、dlopen(3C) では利用できないように指定するか、dlopen() によって指定されたオブジェクトとして指定します。または dlopen() によって指定されたオブジェクトに必要な依存オブジェクトとして指定します。このオプションは共有オブジェクトの作成時にのみ有用です。

-z nodump

オブジェクトを、dldump(3C) では利用できないように指定します。

-z parent=object

出力オブジェクトのリンク先の オブジェクト (実行可能ファイルまたは共有オブジェクト) を指定します。通常、このオプションを使用するのは plugin 共有オブジェクトの作成時で、このオブジェクトは実行可能ファイルにより実行時に dlopen () 関数を介してロードされます。親オブジェクトからのシンボルテーブルは、plugin オブジェクトからの参照を満たすために使用されます。『リンカーとライブラリ』の第 2 章「リンカー」を参照してください。

-z preinitarray=function

構築するオブジェクトの .preinit_array セクションにエントリを追加します。.preinit_array セクションが存在しない場合は、1 つのセクションを新たに作成します。追加されたエントリは function を指すように初期化されます。『リンカーとライブラリ』の「初期設定および終了セクション」を参照してください。

-z relaxreloc

ld は、通常、削除された COMDAT セクションを参照するシンボルを使用して再配置を検出したときに致命的なエラーを出力します。-z relaxreloc が有効な場合、ld は、その代わりに、保持されていた COMDAT セクション内の同等のシンボルにこのような再配置をリダイレクトします。-z relaxreloc は、主にコンパイラ作成者を対象とした特殊なオプションで、一般的な用途向けではありません。

-z rescan-now

これらのオプションは、リンカーに渡されたアーカイブファイルを再走査します。デフォルトでは、アーカイブの検索は、コマンド行に指定されたときに一度だけ処理されます。通常アーカイブは、そのシンボル定義でアーカイブの前に指定されている参照を解決できるように、コマンド行の最後に指定します。ただし、実際には、アーカイブ間での相互依存関係を解決するために、アーカイブ自体を複数回指定しなければならないことがあります。

-z rescan-now は位置オプションで、コマンド行上で検出されるとただちにリンカーによって処理されます。コマンド行上でそのポイントに達したすべてのアーカイブはただちに処理され、シンボル参照を解決する追加のアーカイブメンバーを見つけ出そうとします。アーカイブ全体を走査しても新しい再配置可能オブジェクトが抽出されないと、アーカイブの再走査は終了します。

-z rescan は、位置独立型のオプションです。リンカーは、コマンド行全体の処理を完了するまで再走査作業を延期し、コマンド行上にあるすべてのアーカイブに対して最後の再走査作業を開始します。-z rescan の再走査作業では、初期化 (.init) セクションまたは最終設定 (.fini) セクションを含むオブジェクトが誤って処理され、それらのセクションのコードが動作しないことがあります。このため、-z rescan ではなく、-z rescan-now を使用することを推奨します。

-z rescan-start ... -z rescan-end
--start-group ... --end-group
-( ... -)

アーカイブ再走査グループを定義します。これは位置構成で、終端区切りオプションが検出されるとリンカーによってただちに処理されます。グループ区切りオプション内で見つかったアーカイブはグループとして再処理され、シンボル参照を解決する追加のアーカイブメンバーを見つけ出そうとします。アーカイブ全体を走査しても新しい再配置可能オブジェクトが抽出されないと、アーカイブの再走査は終了します。アーカイブ再走査グループを入れ子にすることはできません。

-z strip-class=[! ]class1,[!] class2,...

特定のクラスのセクションがすべての入力オブジェクトから削除されるため、これらのセクションは出力ファイルに追加されなくなります。このオプションを使用すると、出力ファイルから省略できるセクションに対してきめ細かな制御ができます。

以降の strip クラスの説明は、割り当て不可能なセクションにのみ適用されます。

各クラスのトークンを '!' の前に追加して、そのクラスの削除が禁止されていることを示すことができます。この定義は、nonalloc クラスと組み合わせる場合に役立つことがあります。たとえば、'-z strip-class=nonalloc,!note' を使用して、ノートセクションを除く、すべての割り当て不可のセクションを削除します。

取り除かれたセクションは、出力オブジェクトから完全に削除されます。-z ancillary オプションを使用すると、動的でないシンボルテーブル .symtab に関するこの動作と、それに関連したセクションが変更されます。デフォルトでは、シンボルテーブルは、プライマリオブジェクトと補助的なオブジェクトの両方に書き込まれます。取り除かれた場合、シンボルテーブルは補助的なオブジェクトにのみ書き込まれ、プライマリオブジェクト内に存在しないとしてマークされます。.symtab-z ancillary を使用せずにオブジェクトから取り除かれた場合、このセクションは通常の方法で完全に削除されます。

次のクラスのセクションを定義できます。

nonalloc

割り当て不可のセクションをすべて削除します。これらのセクションは、SHF_ALLOC セクションフラグを含んでいないとものとして識別されます。このクラスは、symbol クラスを除く、ほかのすべてのクラスをカプセル化します。nonalloc クラスは多くの場合、単独で十分であり、不要なすべてのセクションを削除できます。

annotate

すべての注釈セクションを削除します。これらのセクションは、メモリーアクセスツールや、カバレージ関連のツールによって使用される情報を提供します。これらのセクションは、SHT_SUNW_ANNOTATE セクションタイプを指定することで識別します。

comment

すべてのコメントセクションを削除します。これらのセクションは、.comment セクション名を指定することで識別します。あるいは、コメントセクションの操作には mcs(1) ユーティリティーが一般的に使用されています。

debug

デバッグデータを含めるためによく使用されるセクションを削除します。これらのセクションは、.compcom, .line, .stab*、または .debug* セクション名を指定することで識別します。また、これらのセクションは、SHT_SUNW_DEBUG* セクションタイプを指定することで識別します。

exclude

実行可能セクションをすべて削除します。これらのセクションは、SHF_EXCLUDE セクションフラグを指定することで識別します。このクラスは、再配置可能オブジェクトを作成する場合に役立ちます。デフォルトでは、このようなセクションは、動的実行可能ファイルまたは共有オブジェクトの作成時には自動的に除外され、再配置可能オブジェクトの作成時には保持されます。

note

ノートセクションを削除します。これらのセクションは、SHT_NOTE セクションタイプを指定することで識別します。

symbol

出力ファイルが再配置可能オブジェクトでない場合に、割り当て不可のシンボルテーブルセクションと文字列テーブルセクションをすべて削除します。これらのセクションは、SHT_SYMTAB セクションタイプを指定することで識別します。関連する文字列テーブルもすべて削除されます。

-z stub

スタブ共有オブジェクトを生成します。スタブオブジェクトは共有オブジェクトで、mapfiles からすべて作成されます。また、コードやデータを持ちませんが、本物のオブジェクト同じリンクインタフェースを提供します。スタブオブジェクトは、実行時には使用できません。ただし、スタブオブジェクトに対してアプリケーションを作成できます。その場合、スタブオブジェクトは、実行時に使用される本物のオブジェクトの名前を提供し、実行時に本物のオブジェクトを使用します。

スタブオブジェクトは共有オブジェクト用に対してのみ作成でき、エクスポートされる大域シンボルを定義する mapfile を提供する必要があります。そのため、-G および -M オプションが、-z stub の使用時に必要となります。スタブオブジェクトの作成時には、リンカーはコマンド行で指定されているオブジェクトとライブラリファイルをすべて無視するため、スタブを作成するためにこれらのファイルが存在している必要はありません。コンパイル手順が省略でき、リンカーの作業が比較的少ないため、スタブオブジェクトはすぐに作成できます。

「Stub Objects」 in 『Linker and Libraries Guide』を参照してください。

-z symbolcap

オブジェクトの機能を定義する再配置可能オブジェクトを、シンボルの機能を定義する再配置可能オブジェクトに変換します。『リンカーとライブラリ』の「オブジェクト機能のシンボル機能への変換」を参照してください。

-z target=sparc|x86

出力オブジェクトの機械タイプを指定します。サポートされるターゲットは、SPARC と x86 です。-64 オプションも存在していて、対応する 64 ビット機械タイプが使用されている場合を除き、指定されたターゲット用の 32 ビット機械タイプが使用されます。デフォルトでは、生成されるオブジェクトの機械タイプは、コマンド行から処理される最初の ELF オブジェクトによって決まります。オブジェクトを指定していない場合、機械タイプは、コマンド行から処理される最初のアーカイブ内で検出された最初のオブジェクトによって決まります。オブジェクトもアーカイブもない場合、リンカーはネイティブマシンを仮定します。このオプションは、mapfile からの入力のみで ld を使用してオブジェクトを直接作成するときに便利です。 (-M の説明を参照)。また、最初のオブジェクトが目的の機械タイプのオブジェクトではない、異なる機械タイプのオブジェクトを含むアーカイブからすべてをリンクするというごくまれな場合にも便利です。

-z text | textoff | textwarn

これらのオプションは、動的モードでのみ使用できます。-z text オプションは、書き込み不可能な割り当て可能セクションに対する再配置が残っていた場合、強制的に致命的エラーを発生させます。歴史的理由から、この動作は、実行可能オブジェクトまたは共有オブジェクトを作成するときのデフォルトではありません。ただし、作成される動的オブジェクトのテキスト部分を実行中の複数のプロセス間で共有可能にするため、このオプションを使用することをお勧めします。オブジェクトをメモリーに読み込むときの再配置オーバーヘッドが最低限に抑えられることを共有テキストセグメントは保証します。『リンカーとライブラリ』の「位置独立のコード」を参照してください。

-z textoff オプションは、すべての割り当て可能セクション (書き込み不可能なセクションを含む) に対する再配置を許可します。共有オブジェクト作成時のデフォルトの設定です。

-z textwarn オプションは、書き込み不可能な割り当て可能セクションに対する再配置が残っていた場合、警告を表示します。実行可能オブジェクト作成時のデフォルトの設定です。

-z verbose

このオプションはリンクエディット時、警告診断を追加します。現在、このオプションによって次の警告が有効になります。

  • 再配置の置き換えの疑わしい使用。

  • 共有オブジェクト作成時の静的 TLS 再配置の制限された使用。

  • シンボルの可視性の不一致。

将来、このオプションは、デフォルトで生成される詳細な診断を提供するように拡張される予定です。

-zwrap=symbol
-wrap= symbol
--wrap= symbol

ソースコードを変更しなくてもラッパーコードを出力オブジェクトにリンクできるようにするため、symbol への未定義の参照の名前を変更します。-z wrap が指定されている場合、symbol への未定義の参照はすべて __wrap_symbol 参照に変更され、__real_symbol への参照はすべて symbol 参照に変更されます。ユーザーは、__wrap_symbol 関数を含むオブジェクトを提供するものと想定されています。ラッパー関数では、ラップされる実際の関数を参照するために、__real_symbol を呼び出すことができます。

次に、malloc(3C) 関数のラッパーの例を示します。

void *
__wrap_malloc(size_t c)
{
        (void) printf("malloc called with %zu\n", c);
        return (__real_malloc(c));
}

すべてのオブジェクトをコンパイルするために -z wrap=malloc を使用してほかのコードをこのファイルとリンクする場合、malloc へのすべての呼び出しは __wrap_malloc 関数を代わりに呼び出します。__real_malloc への呼び出しは、本物の malloc 関数を呼び出します。

本物の関数とラップされた関数は別々のソースファイルで保持するようにしてください。そうしないと、コンパイラまたはアセンブラが呼び出しの解決をリンカーに任せずに自分で行うため、ラップの発生が妨げられることがあります。

セカンダリオプション

次のオプションは、一般にはあまり使用されません。これらのオプションは、下位互換性、非常に特殊な機能、または機能強化されたバリエーションに置き換えられたオプションを提供します。

-a

静的モードでのみ、静的実行可能ファイルを生成します。未定義の参照があるとエラーを発行します (静的モードのデフォルトの動作)。-a オプションは、-r オプションと同時に使用することはできません。「機能説明」の「静的実行可能ファイル」を参照してください。

-b

動的モード専用です。動的実行可能ファイルに対して、共有オブジェクト内のシンボルを参照するような特殊な再配置処理を行いません。-b オプションを指定しない場合、リンカーは、テキストセグメントが読み取り専用のままになるように動的実行可能ファイル内でいくつかの方法を適用します。1 つの方法は、共有オブジェクトで定義されている関数への参照に対して位置独立型の特別な再配置を作成することです。もう 1 つの方法は、共有オブジェクト内に定義されているデータオブジェクトが実行時に実行可能ファイルのメモリーイメージにコピーされるように設定することです。

このオプションは、特殊化された動的オブジェクトを対象としているため、一般的な用途に使用することはお勧めしません。-このオプションを使用すると、オブジェクトを共有可能にするために必要な特殊処理がすべて無効になります。また、64 ビット実行可能オブジェクトの再配置を妨げることもあります。

-B group

共有オブジェクトとその依存オブジェクトを 1 つのグループにまとめます。グループ内のオブジェクトは、実行時に、グループ内のほかのメンバーに結合されます。このモードは、dlopen(3C)RTLD_GROUP モードとともに使用してプロセスにオブジェクトを追加する場合と同様です。あるグループに属しているオブジェクトに対して明示的な依存関係を持つオブジェクトは、自分自身もそのグループのメンバーになります。

グループは自己完結している (依存関係がグループ内で解決されている) 必要があるため、-z defs オプションを追加して、グループが自己完結していることを確認してください。-

グループを確立すると、オブジェクトのグループの結合を制御するための基本的な手段が提供されます。ただし、より適切な制御は、直接結合で実現できます。-B direct オプションを参照してください。

-B symbolic

動的モード専用です。共有オブジェクトを作成する際、可能であれば、大域シンボルへの参照を共有オブジェクト内の参照定義に結合します。通常、共有オブジェクト内の大域シンボルへの参照は、定義が使用可能でも実行時まで結合されません。このため、実行可能オブジェクト内またはほかの共有オブジェクト内に定義された同一のシンボルによって、オブジェクト自体の定義が無効になる可能性があります。-z defs オプションによって無効にしないかぎり、ld はシンボルが未定義であることを知らせる警告を出力します。

このオプションは、特殊化された動的オブジェクトを対象としているため、一般的な用途に使用することはお勧めしません。-オブジェクトに必要な実行時の再配置処理を削減するには、直接結合の使用とともに、バージョン定義の作成をお勧めします。-B direct オプションを参照してください。

-d y | n

-d y が指定されている場合 (デフォルト)、ld は動的リンクを使用します。-d n が指定されている場合、ld は静的リンクを使用します。「機能説明」の「静的実行可能ファイル」および -B dynamic | static の項目を参照してください。

-I name
--dynamic-linker name

実行可能オブジェクトの作成時、プログラムヘッダーに書き込まれるインタプリタのパス名として name を使用します。静的モードのデフォルトの設定では、インタプリタは使用されません。動的モードのデフォルトの設定では、実行時リンカー ld.so.1(1) が使用されます。どちらの場合も、-I name でデフォルトの設定を無効にできます。exec(2) は、a.out を読み込む際にこのインタプリタをロードし、a.out ではなくインタプリタに制御を渡します。

-z absexec

動的実行可能ファイルを構築するときにのみ使用されます。このオプションは、外部の絶対的シンボルへの参照を、実行時ではなく今すぐに解決するよう指示します。これによって、ある条件が整った場合には、動的オブジェクトがスワップ領域を大量に消費する可能性のあるテキストの再配置を行わなくなります。

-z combreloc | nocombreloc

デフォルトでは、ld は、実行可能ファイルまたは共有オブジェクトを作成するときに複数の再配置セクションを結合します。このセクション結合は再配置可能オブジェクトとは異なるもので、再配置可能セクションでは、再配置の適用が必要なセクションと 1 対 1 の関係が維持されます。-z nocombreloc オプションは、この再配置セクションのマージを無効にし、元の再配置可能オブジェクトで見つかった 1 対 1 の関係を保持します。

ld は、データ再配置セクションのエントリを、そのシンボル参照に従ってソートします。これにより、実行時のシンボル参照を最低限に抑えます。複数の再配置セクションが結合されている場合は、これにより、オブジェクトがメモリーに読み込まれるときの再配置オーバーヘッドを最低限に抑え、動的オブジェクトの実行時の読み込みを速くします。

これまでは、個々の再配置セクションはすべての実行可能ファイルまたは共有オブジェクトに引き継がれ、前述した再配置セクションのマージを有効にするには -z combreloc オプションが必要でした。現在では、再配置セクションのマージはデフォルトになっています。-z combreloc オプションは古い構築環境のために受け入れられますが、このオプションは不必要で効果はありません。

-z groupperm | nogroupperm

一意のグループにつながる依存関係の割り当て、または割り当ての解除を行います。グループに対して依存関係の割り当てを行うと、-B group オプションを使って依存関係を構築した場合と同じ効果が得られます。

-z nocompstrtab

ELF 文字列テーブルおよびコメントセクションの圧縮を無効にします。デフォルトでは、文字列の圧縮は、SHT_STRTAB セクション、SHF_MERGESHF_STRINGS のセクションフラグが設定されている SHT_PROGBITS セクション、およびコメントセクションに適用されます。

mcs(1) ユーティリティーを -c オプションとともに使用すると、オブジェクトが構築されたあとにコメントセクションを圧縮できます。

-z nodefaultlib

オブジェクトが、実行時デフォルトライブラリ検索パス (LD_LIBRARY_PATH や実行パスの後に使用) を無視するように指定します。このように指定すると、すべての依存オブジェクトが実行パスを使用することになります。

-z noldynsym

動的実行可能ファイルまたは共有オブジェクトに .SUNW_ldynsym セクションが含まれないようにします。.SUNW_ldynsym セクションは、ローカル関数用のシンボルを提供することで .dynsym セクションを拡張します。ローカル関数のシンボルを使用すると、デバッガで、シンボル名などが削除されたプログラムからスタックトレースにローカル関数名を表示できるようになります。同様に、dladdr(3C) では、より正確な結果を出力できます。

-z noldynsym オプションも、.SUNW_ldynsym セクションに関連する 2 つのソートセクションが含まれないようにします。.SUNW_dynsymsort セクションでは、通常の関数と変数シンボルにソートアクセスできます。.SUNW_dyntlssort セクションでは、スレッドローカル記憶領域 (TLS) 変数シンボルにソートアクセスできます。

.SUNW_ldynsym.SUNW_dynsymsort、および .SUNW_dyntlssort セクションは、結果ファイルの割り当て可能なテキストセグメントの一部となりますが、strip(1) によって削除することはできません。したがって、これらのセクションが含まれないようにする唯一の方法は、-z noldynsym オプションを使用することです。

-z nopartial

部分的に初期化されたシンボルが、再配置可能なオブジェクト内に定義されている場合、このシンボルは、生成される出力ファイルで展開されます。

-z now

オブジェクトがレイジーでない実行時結合を要求するように指定します。このモードは、dlopen(3C)RTLD_NOW モードとともに使用してプロセスにオブジェクトを追加する場合と同様です。また、このモードは、LD_BIND_NOW 環境変数を有効にする場合と同様です。ld.so.1(1) を参照してください。

-z origin

実行時ただちに $ORIGIN を処理することを要求するように、オブジェクトに指定します。この動作は現在はデフォルトです。このオプションは、従来機能との互換性のためにのみ残されています。

-z redlocsym

SHT_SYMTAB シンボルテーブルから、SECT シンボル以外のすべてのローカルシンボルを削除します。ローカルシンボルを参照する配置はすべて更新され、SECT シンボルを参照するようになります。このオプションを使用すると、特殊なオブジェクトのシンボルテーブルのサイズを大幅に削減できます。-z strip-class および -z noldynsym オプションも参照してください。

-z redlocsym オプションは、オペレーティングシステムカーネル内部で使用されるような特殊なオブジェクトに対して有用ですが、一般的な用途には推奨されません。シンボルテーブル SHT_SYMTAB のサイズは実行時動作に影響を与えず、ローカルシンボルの削除はプロセスの可観測性に悪影響を与える場合があります。ローカルシンボルを削除すると、コンパイラドライバ -g オプションを使用して生成されるデバッグ情報が少なくなる可能性があります。また、ローカルシンボルを削除すると、通常は .SUNW_ldynsym セクションに書き込まれる情報も削除されるため、pstack(1)truss(1) などのデバッガやツールの有効性が低下します。

-z rescan

リンク編集に提供されたアーカイブファイルの再スキャンを起動する位置独立オプション。リンカーは、コマンド行全体の処理を完了するまで再走査作業を延期し、コマンド行上にあるすべてのアーカイブに対して最後の再走査作業を開始します。-z rescan の再走査作業では、初期化 (.init) セクションまたは最終設定 (.fini) セクションを含むオブジェクトが誤って処理され、それらのセクションのコードが動作しないことがあります。このため、-z rescan ではなく、-z rescan-now を使用することを推奨します。

環境変数

LD_ALTEXEC

代替リンカーパス名。ld が実行され、この代替リンカーに制御が渡されます。この環境変数により、さまざまなコンパイルドライバから呼び出されるデフォルトのリンカーを上書きする汎用的な手段が提供されます。-z altexec64 オプションを参照してください。

LD_LIBRARY_PATH

-l オプションで指定されたライブラリを検索するディレクトリのリストを指定します。複数のディレクトリを指定する場合は、ディレクトリとディレクトリの間をコロンで区切ります。2 つのディレクトリをセミコロンで区切る方式がもっとも一般的です。

dirlist1;dirlist2

次のように ld の呼び出し時に -L が複数回指定されている場合、

ld ... -Lpath1 ... -Lpathn ...

検索の順番は、次のようになります。

dirlist1 path1 ... pathn dirlist2 LIBPATH

ディレクトリリストにセミコロンが含まれていない場合、dirlist2 と解釈されます。

LD_LIBRARY_PATH 環境変数も、動的な依存関係を検索する実行時リンカーに影響を及ぼします。

この環境変数には、_32 または _64 という接尾辞を指定できます。この接尾辞を追加することで、LD_LIBRARY_PATH 環境変数は 32 ビットのプロセスまたは 64 ビットのプロセス専用になり、接尾辞のない LD_LIBRARY_PATH 環境変数が有効な場合でも、優先的に使用されます。

LD_NOEXEC_64

64 ビットのリンカーが自動的には実行されないようにします。デフォルトでは、最初の再配置可能オブジェクトの ELF クラスが 64 ビットオブジェクトである場合は、自動的に 64 ビット版のリンカーが起動されます。32 ビット版のリンカーが作成できる 64 ビットイメージにはいくつかの制限がありますが、リンク編集の中には、32 ビットのリンカーを使用した方が速いものも存在します。

LD_OPTIONS

ld のデフォルトのオプションセットです。LD_OPTIONS の値は、コマンド行で ld の起動コマンドの直後に指定されたものと解釈されます。つまり、次のように指定した場合と同じ結果になります。

ld $LD_OPTIONS ... other-arguments ...
LD_RUN_PATH

リンカーに実行パスを指定する代替手段です (-R オプションを参照)。LD_RUN_PATH-R オプションを両方指定すると、-R オプションが優先されます。

SGS_SUPPORT

リンカーによって読み込まれ、リンクプロセスの情報を与えられた共有オブジェクトを、コロンで区切った形式で一覧します。この環境変数には、_32 または _64 という接尾辞を指定できます。こうすることで、この環境変数を、ld の 32 ビットクラスまたは 64 ビットクラスのどちらか専用にできます。この指定は、現在有効になっている接尾辞の付いていない環境変数の指定より優先されます。-S オプションを参照してください。

文字列 LD_ で始まる環境変数名は、ldld.so.1(1) の拡張用として予約されています。

ファイル

libx.so

共有オブジェクトライブラリ。

libx.a

アーカイブライブラリ

a.out

デフォルトの出力ファイル。

LIBPATH

32 ビットライブラリの場合、デフォルトの検索パスは、順番に、/lib、そして /usr/lib です。64 ビットライブラリの場合、デフォルトの検索パスは、順番に、/lib/64、そして /usr/lib/64 です。

/usr/lib/ld

リンク編集時に使用可能な複数の mapfiles を含むディレクトリです。これらの mapfiles により、メモリーレイアウトの定義、bss の整列、および実行不可能なスタックの定義など、さまざまな機能が提供されます。

属性

属性についての詳細は、マニュアルページの attributes(5) を参照してください。

属性タイプ
属性値
使用条件
system/linker
インタフェースの安定性
確実

関連項目

as(1), crle(1), gprof(1), ld.so.1(1), ldd(1), mcs(1), pvs(1), strip(1), exec(2), stat(2), dlopen(3C), dldump(3C), elf(3ELF), ar.h(3HEAD), a.out(4), attributes(5)

『リンカーとライブラリ』

注意事項

ld のデフォルト動作を指定するためのオプションは、歴史的理由から残されています。しかし、動的オブジェクトが広く使用されている現在のプログラミング環境では、従来とは異なるデフォルトの方が有効である場合が少なくありません。ただし、従来のデフォルトは、既存のプログラム開発環境との互換性を維持するために残しておく必要があります。このマニュアルでは従来のデフォルトは、可能なかぎり、そのことを明示する方法で記述します。現在の推奨されるオプションについては、『リンカーとライブラリ』の第 7 章「リンカーのクイックリファレンス」を参照してください。

ld により作成されるファイルがすでに存在する場合、そのファイルは、すべての入力ファイルが処理されたあとにリンクが解除され、指定された名前で新しいファイルが作成されます。これにより、ld は、古いファイルの内容にアクセスしている既存のプロセスが実行を継続できるようにする一方で、同時にそのファイルの新しいバージョンを作成できます。古いファイルにほかにリンクが含まれていない場合は、そのファイルを参照している最後のプロセスが終了すると、その削除されたファイルのディスク領域が解放されます。

Oracle Solaris 11 では、作成されるファイルがすでに存在するときの ld の動作が変更されました。古いバージョンでは、既存のファイルはその場所で書き換えられるため、そのファイルを使用している動作中のプロセスが壊れてしまう可能性がありました。この変更は、ファイルシステム内にハードリンクが複数ある出力ファイルに影響します。以前は、すべてのリンクがそのまま維持され、新しいファイルの内容にもアクセスしていました。新しい ld の動作はこのようなリンクを解除するため、指定された出力ファイル名だけが新しいファイルを参照します。それ以外のリンクはすべて、古いファイルを引き続き参照します。一貫性のある動作を保証するには、リンカーの出力ファイルへの複数のハードリンクに依存するアプリケーションで、そのほかのファイル名を明示的に削除し、リンクし直す必要があります。