2016-06-23 25 views
1

私はLuaでAIが開発された学校プロジェクトのクライアントを立ち上げようとしています。私のプログラムのルートに/ lib /フォルダにliblua.soを追加しましたフォルダ。共有ライブラリの読み込み中にエラーが発生しました:liblua.so

はコンパイルと言ったプログラムを起動した後、私は次のエラーを取得する:私は私の共有ライブラリが置かれている場所を知っている私のプログラムのためのコンパイル時に何かをする必要があります理解して何から

./zappy_ai: error while loading shared libraries: liblua.so: cannot open shared object file: No such file or directory

ここに私のMakefileの関連部分です:

私は私のプログラムを起動できるようにするために、追加する必要があり、それは私の共有ライブラリを見つけてきた何
CXX    =  g++ 

BASE_FLAGS  =  -Wall -Wextra -Iincludes 

AI_NAME   =  zappy_ai 

AI_PATH   =  ./sources/client/ 

AI_FLAGS  =  $(BASE_FLAGS)     \ 
         -L./lib/      \ 
         -I./includes/client/   \ 
         -I./include/     \ 
         -std=c++11      \ 

AI_LDFLAGS  =  -llua 

AI_SRCS   =  main.cpp      \ 
         Client.cpp      \ 
         Params/Params.cpp    \ 
         Params/Option.cpp    \ 
         SocketTCP.cpp     \ 
         Misc/Error.cpp 

AI_OBJS   =  $(addprefix $(AI_PATH), $(AI_SRCS:.cpp=.cpp.o)) 

%.cpp.o   :  %.cpp 
         @printf "%b[Compilation]%b %-50s" $(BLUE) $(RESET) $< 
         @$(CXX) $(FLAGS) -c $< -o [email protected] 
         @printf "%bOK%b\n" $(GREEN) $(RESET) 

$(AI_NAME)  :  FLAGS = $(AI_FLAGS) 
$(AI_NAME)  :  $(AI_OBJS) 
         @$(CXX) $^ -o [email protected] $(AI_LDFLAGS) 
         @printf "%b[Message]%b AI compilation done\n\n" $(YELLOW) $(RESET) 

+1

ソースコードから 'lua'をコンパイルした場合は' ldconfig'を実行するか、 '/ etc/ld.so.conf'に'/usr/local/lib'を追加する必要があるかもしれません –

答えて

1

tldr:

$ LD_LIBRARY_PATH="$LD_LIBRARY_PATH:./lib" ./zappy_ai 

長い説明:

あなたは

./lib/liblua.so 
に対する

zappy_ai 

を動的にリンクされました

LDFLAGS = -L./lib/ 

LDLIBS = -llua 

zappy_ai実行可能ファイルを使用して

動的リンカ/ローダは-lluaシンボルを解決しようとしたとき./lib/同じLD_LIBRARY_PATH環境変数内に存在することを必要とするzappy_ai用途。

関連する問題