スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

SCV使用時の役立つ?gccオプション

SCVをコンパイルする際の Makefileはこんな感じです。
※使用する際にはインストールパスを自分のに置き換えてください。

 1|SYSTEMC_HOME = /usr/local/lib/systemc-2.2.0
 2|SCV_HOME     = /usr/local/lib/scv-1.0p2-sysc2.2
 3|TARGET_ARCH  = linux
 4|
 5|SYSTEMC_INC_DIR $(SYSTEMC_HOME)/include
 6|SYSTEMC_LIB_DIR $(SYSTEMC_HOME)/lib-$(TARGET_ARCH)
 7|
 8|SCV_INC_DIR $(SCV_HOME)/include
 9|SCV_LIB_DIR $(SCV_HOME)/lib-$(TARGET_ARCH)
10|
11|FLAGS   = -g -Wall -pedantic -Wno-long-long \
12|         -DSC_INCLUDE_DYNAMIC_PROCESSES -fpermissive \
13|         -I$(SYSTEMC_INC_DIR) -I$(SCV_INC_DIR)
14|LDFLAGS = -L$(SCV_LIB_DIR) -lscv -L$(SYSTEMC_LIB_DIR) -lsystemc -lm
15|
16|SRCS = sc_main.cpp
17|OBJS=$(SRCS:.cpp=.o)
18|
19|main: $(OBJS)
20|    g++ -o $@ $(OBJS) $(LDFLAGS)
21|
22|.cpp.o:
23|    g++ -c $(FLAGS) $<
24|
25|%.o: %.c
26|    gcc -Wall -c $<
27|
28|clean:
29|    rm -f main *.o *.lo

しかし、「libscv.so」に対して以下の Errorが発生します。

$> ./main
./main: error while loading shared libraries: libscv.so: cannot open shared object file: No such file or directory


原因はこちらのように、libscv.soへのパスが見えていないからになります。

$> ldd main
linux-gate.so.1 => (0x00bd3000)
libscv.so => not found

この解決方法として、SCVの Exampleでは「LD_LIBRARY_PATH」に対して
追加することで解決しています。

LD_LIBRARY_PATH=$SCV_HOME/lib-$SYSTEMC<_ARCH
export LD_LIBRARY_PATH

別の解決方法:リンカ時に指定する

ローカルな環境であれば、リンカ時に設定することが可能です。
(LD_LIBRARY_PATH使うのダメみたいなこともあるみたい)

「-Xlinker -rpath パス」

を追加します。。

LDFLAGS = -Xlinker -rpath $(SCV_LIB_DIR) -L$(SCV_LIB_DIR) -lscv -L$(SYSTEMC_LIB_DIR) -lsystemc -lm

これで、コンパイル&リンカすると、

$> ldd main
linux-gate.so.1 => (0x00a73000)
libscv.so => /usr/local/lib/scv-1.0p2-sysc2.2/lib-linux/libscv.so (0x003fb000)

というような感じで、「libscv.so」までのパスを埋め込んでくれます。


SystemC-2.3の原因もこれだったか。。。


参考サイト

関連記事

コメントの投稿

非公開コメント

プロフィール

Kocha

Author:Kocha
なんでもチャレンジ!(^o^)/
E-mail
github:Kocha
イベントカレンダー

カレンダー
04 | 2017/05 | 06
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
カテゴリ
OVP (4)
最新記事
最新コメント
アーカイブ
リンク
Twitter
アクセス人数
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。