gccの文書化と同様の質問をたくさん読んだ後、私の問題は残っています。
私のプロジェクトにlibluajit.aを静的にリンクしようとしていますが、試してみるコマンドの組み合わせに関係なく、1つまたは別のエラーがポップアップします。私は正常にダイナミックリンクで私のプロジェクトをコンパイルしました。今
アイデアのうちイムのでHERESに私は今得たもの:gccと静的にリンクしているときに "dlopenへの未定義の参照"
gcc_options = -std=c++11 -static -pthread
src_dir = LuaHost
src_files = $(src_dir)/*.cpp
src_files += $(src_dir)/*.h
src_files += $(src_dir)/LuaSrc/*.h
src_files += $(src_dir)/LuaSrc/*.hpp
lib_cmd = -Wl,--no-as-needed -ldl -L./$(src_dir)/LuaSrc/ -lluajit
#compile everything and output an executeable
all:
g++ $(gcc_options) $(src_files) $(lib_cmd) -o LuaJITSandbox.o
そしてHERESにエラーの一部:
./LuaHost/LuaSrc/libluajit.a(lj_clib.o): In function `lj_clib_index':
lj_clib.c:(.text+0x1c0): undefined reference to `dlsym'
./LuaHost/LuaSrc/libluajit.a(lj_clib.o): In function `lj_clib_load':
lj_clib.c:(.text+0x2c8): undefined reference to `dlopen'
lj_clib.c:(.text+0x350): undefined reference to `dlerror'
lj_clib.c:(.text+0x424): undefined reference to `dlopen'
libluajit.aが同じマシン上でコンパイルされている、AラズベリーPi。
リンク時のライブラリの順序は重要です。ライブラリAがライブラリBに依存している場合、コマンドラインでAは* Bの前に来なければなりません。 –
リンクコマンド*に '-ldl'を追加します。出力の後ろにあるので、最後まで移動してみてください。 – Galik
@Galik Nope、エラーは変更されません。もし私の命令の命令を混乱させれば、それは何も変えなかった。 – Flowx