質問編集履歴
1
追加の質問、更新
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++のコンパイルがしたいです。
|