2018-05-30 :-|
_ [C言語][リンク]同じシンボルがあるオブジェクトをリンクする
その場合はリンク時に最初に見つけたシンボルが使われる。
main.c
#include <stdio.h> extern void foo(void); int main(int ac, char** av) { foo(); return 0; }
a.c
#include <stdio.h> void foo(void) { puts("I am a"); }
b.c
#include <stdio.h> void foo(void) { puts("I am b"); }
コンパイルする。
% gcc -c main.c % gcc -c a.c % gcc -c b.c
静的ライブラリを作る。
% ar r foo.a b.o
リンクする
% gcc -o main main.o a.o foo.a
実行する。最初に見つけた a.o の foo() が呼ばれる。
% ./main I am a
静的ライブラリを先に持ってくるとリンク時に怒られる。
% gcc -o main main.o foo.a a.o a.o: In function `foo': a.c:(.text+0x0): multiple definition of `foo' foo.a(b.o):b.c:(.text+0x0): first defined here
なおシンボル
% nm foo.a b.o: 0000000000000000 T foo U puts
% nm a.o 0000000000000000 T foo U puts
weak シンボルというのがあったり ELF の場合は云々という事情もあるらしい。weakシンボルなんて絶対に混乱の原因になるだろ。
_ [結城友奈は勇者である][ゆゆゆい][ゆゆゆ]結城友奈は勇者である 勇者の章 ブルーレイを買った
初回特典です。テレビ放映してたときに最終回を見損ねたので買いました。
「花結のきらめき」のシリアルコードが封入されてるので貰いました。
神花開放していくとイラストが変わります。
最初の背景はこちら。
神花開放した背景はこちら。
必殺技がぶっとんでますなあ。
B0766MVSLF