共有ライブラリ(つまりlibabc.so)と共有ライブラリを使用する実行可能ファイル(つまりmyapp)をビルドしました。共有ライブラリと私の実行可能ファイルの両方をファイルシステムに入れましたが、実行ファイルを実行すると次のエラーが表示されます共有ライブラリの読み込み中にエラーが発生しました
共有ライブラリをロード中にエラーが発生しました:/.so共有オブジェクトファイルを開くことができません。
私の共有環境は、〜/ targetfs/usr/local/abc/libにインストールしていますので、(〜/ targetfs)に置かれた別のターゲットファイルシステムがあります。私のアプリケーションをリンクする時には、私はそれを
LDFLAGSを+ = -L〜/ targetfsは/ usr/local/ABC/libに
私のアプリケーションが正常にビルド与えます。しかし、(〜/ targetfs)が自分のファイルシステムである環境でアプリケーションを実行すると、共有ライブラリをロードするときに私のアプリケーションが エラーを起こすと戸惑う。/home/user/targetfs/usr/local/abc/lib/libabc.so:can共有オブジェクトファイルを開いていない。そのようなファイルやディレクトリは存在しません。
もちろん、私のアプリケーションが存在しない共有ライブラリを検索していますが、自分のアプリケーションをこのパスから独立させたいのではなく、/ lib、/ usr/lib、/ usr/local/lib、またはLD_LIBRARY_PATHの場所です。
"問題は、"アプリケーションをその場所から独立してリンクするにはどうすればよいですか "です。
私の共有ライブラリ&のメイクファイルは以下のとおりです。
--------------共有ライブラリのメイクファイル。
CC = $(CROSS_COMPILE)gcc
CFLAGS = -Wall -shared -fpic
LDFLAGS = -Xlinker --gc-sections --allow-shlib-undefined
LIBRARY = libabc.so
OBJ_DIR = obj
SRC_DIR = src
CHK_DIR_EXISTS = test -d
MKDIR = mkdir -p
# Project Source Files
C_SOURCES += $(SRC_DIR)/abc.c
OBJECTS += $(OBJ_DIR)/abc.o
INCLUDES += -Iinc
$(LIBRARY): $(OBJECTS)
@echo ""
@echo "Linking..." $(LIBRARY)
@$(CC) $(CFLAGS) $(LDFLAGS) $(OBJECTS) -o $(OBJ_DIR)/$(LIBRARY)
----------アプリケーションのMakefile(不必要な情報を省略)私のMakefileの中で何が不足しているか
LDFLAGS += $(TARGETFS)/usr/local/abc/lib/libabc.so \
-lpthread -lrt
任意の考えを(不必要な情報を省略)。
よろしくおねがいします。 Farrukh Arshad。
ありがとうございます。問題が解決しました –