質問編集履歴

1

追加の質問、更新

2018/07/11 12:03

投稿

MF_19
MF_19

スコア27

test CHANGED
File without changes
test CHANGED
@@ -1,3 +1,137 @@
1
+ ###追加質問です
2
+
3
+ 下記で質問させて頂いてましたが、新たなエラーが出てきたので
4
+
5
+ 質問させて頂きます。
6
+
7
+
8
+
9
+ もともと3つの.aファイルをを共有ライブラリに静的に結びつけようとしていて
10
+
11
+ undifineのエラーが出ていました。(実行ファイルのmake時)
12
+
13
+
14
+
15
+ 試しに別の.aファイルを試すとこちらは上手く静的に結びつき
16
+
17
+ undifineのエラーが出ませんでした。
18
+
19
+
20
+
21
+ 同じ方法でもともとの.aファイルで実行するとエラーが出てくるので
22
+
23
+ ここの部分が問題かと思います。
24
+
25
+
26
+
27
+ 新たなエラー
28
+
29
+ ```
30
+
31
+ NPACK -shared obj/region_layer.o obj/utils.o obj/local_layer.o obj/shortcut_layer.o obj/im2col.o obj/data.o obj/batchnorm_layer.o obj/dropout_layer.o obj/image.o obj/convolutional_layer.o obj/gru_layer.o obj/detection_layer.o obj/avgpool_layer.o obj/col2im.o obj/normalization_layer.o obj/inferencer.o obj/train.o obj/lstm_layer.o obj/network.o obj/crnn_layer.o obj/layer.o obj/deconvolutional_layer.o obj/rnn_layer.o obj/reorg_layer.o obj/crop_layer.o obj/softmax_layer.o obj/box.o obj/list.o obj/matrix.o obj/connected_layer.o obj/gemm.o obj/parser.o obj/option_list.o obj/activations.o obj/cuda.o obj/blas.o obj/activation_layer.o obj/maxpool_layer.o obj/route_layer.o obj/tree.o obj/cost_layer.o /opt/openblas/lib/libopenblas.a /home/NNPACK/lib/libpthreadpool.a -o libsensor.so
32
+
33
+ /usr/bin/ld: /home/NNPACK/lib/libpthreadpool.a(threadpool-pthreads.c.o): relocation R_X86_64_32 against `.text' can not be used when making a shared object; recompile with -fPIC
34
+
35
+ /home/NNPACK/lib/libpthreadpool.a: error adding symbols: Bad value
36
+
37
+ collect2: error: ld returned 1 exit status
38
+
39
+ Makefile:93: recipe for target 'libtest.so' failed
40
+
41
+ make: *** [libsensor.so] Error 1
42
+
43
+ ```
44
+
45
+ sharedの引数に2つの.aファイルを追加しています。
46
+
47
+ libopenblas.a(新たに試した.a)
48
+
49
+ libpthreadpool.a(もともとの.a)
50
+
51
+
52
+
53
+ ###追加の質問
54
+
55
+ このエラーについて-fPICを追加する必要があるように思ったのですが、
56
+
57
+ すでに付いている認識でいます。どこを変更すれば宜しいでしょうか?
58
+
59
+
60
+
61
+ もしくは.aファイル作成時(cmake)に必要なのでしょうか。
62
+
63
+ つまり.aファイルを作り直す?
64
+
65
+
66
+
67
+ よろしくお願いします。
68
+
69
+
70
+
71
+ makeファイル変更点
72
+
73
+ ・ifeq ($(OPENBLAS), 1)部分追加
74
+
75
+ ・$(DLIB)の引数にlibopenblas.a、libpthreadpool.aを追加
76
+
77
+ ```
78
+
79
+ (省略)
80
+
81
+ ifeq ($(OPENBLAS), 1)
82
+
83
+ INCLUDE+= -static -DOPENBLAS -I/opt/openblas/include
84
+
85
+ CFLAGS+= -DOPENBLAS -DSTBI_NO_HDR -DSTBI_NO_LINEAR
86
+
87
+ LDFLAGS+=/opt/openblas/lib/libopenblas.a
88
+
89
+ endif
90
+
91
+
92
+
93
+ ifeq ($(NNPACK), 1)
94
+
95
+ INCLUDE+= -static -DNNPACK -I/home/NNPACK/deps/pthreadpool/include -I/home/NNPACK/include/nnpack -I/home/NNPACK/deps/cpuinfo/include
96
+
97
+ CFLAGS+= -DNNPACK
98
+
99
+ LDFLAGS+= /home/NNPACK/lib/libpthreadpool.a /home/NNPACK/lib/libnnpack.a /home/NNPACK/lib/libcpuinfo.a
100
+
101
+ endif
102
+
103
+
104
+
105
+ (省略)
106
+
107
+
108
+
109
+ all: $(TARGET) $(DLIB)
110
+
111
+
112
+
113
+ $(TARGET): $(OBJECTS)
114
+
115
+ $(COMPILER) $(CFLAGS) $(LIBS) -o $@ $^ $(LDFLAGS)
116
+
117
+
118
+
119
+ $(DLIB): $(OBJECTS) /opt/openblas/lib/libopenblas.a /home/NNPACK/lib/libpthreadpool.a
120
+
121
+ $(COMPILER) $(CFLAGS) -shared $^ -o $@
122
+
123
+
124
+
125
+ (省略)
126
+
127
+ ```
128
+
129
+
130
+
131
+ ###ここから下は当初の内容です
132
+
133
+
134
+
1
135
  ### 前提・実現したいこと
2
136
 
3
137
  makeファイルを用いてc++のコンパイルがしたいです。