質問するログイン新規登録

質問編集履歴

12

strace追加

2021/04/06 05:05

投稿

daiki002
daiki002

スコア68

title CHANGED
File without changes
body CHANGED
@@ -77,6 +77,122 @@
77
77
  - アーキテクチャが一致しているかの確認
78
78
  Android, LinuxどちらもARM32環境で一致しています。
79
79
 
80
+ - straceの確認
81
+ ```
82
+ $ strace ./a.out
83
+ execve("./a.out", ["./a.out"], 0xbe816680 /* 26 vars */) = 0
84
+ brk(NULL) = 0x344000
85
+ mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f55000
86
+ access("/etc/ld.so.preload", R_OK) = 0
87
+ openat(AT_FDCWD, "/etc/ld.so.preload", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
88
+ fstat64(3, {st_mode=S_IFREG|0644, st_size=54, ...}) = 0
89
+ mmap2(NULL, 54, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3, 0) = 0xb6f54000
90
+ close(3) = 0
91
+ readlink("/proc/self/exe", "/home/pi/a.out", 4096) = 20
92
+ openat(AT_FDCWD, "/usr/lib/arm-linux-gnueabihf/libarmmem-v7l.so", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
93
+ read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\254\3\0\0004\0\0\0"..., 512) = 512
94
+ _llseek(3, 16748, [16748], SEEK_SET) = 0
95
+ read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 960) = 960
96
+ _llseek(3, 16424, [16424], SEEK_SET) = 0
97
+ read(3, "A,\0\0\0aeabi\0\1\"\0\0\0\0056\0\6\6\10\1\t\2\n\3\f\1\22\4\24"..., 45) = 45
98
+ _llseek(3, 16748, [16748], SEEK_SET) = 0
99
+ read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 960) = 960
100
+ _llseek(3, 16424, [16424], SEEK_SET) = 0
101
+ read(3, "A,\0\0\0aeabi\0\1\"\0\0\0\0056\0\6\6\10\1\t\2\n\3\f\1\22\4\24"..., 45) = 45
102
+ _llseek(3, 16748, [16748], SEEK_SET) = 0
103
+ read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 960) = 960
104
+ _llseek(3, 16424, [16424], SEEK_SET) = 0
105
+ read(3, "A,\0\0\0aeabi\0\1\"\0\0\0\0056\0\6\6\10\1\t\2\n\3\f\1\22\4\24"..., 45) = 45
106
+ _llseek(3, 16748, [16748], SEEK_SET) = 0
107
+ read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 960) = 960
108
+ _llseek(3, 16424, [16424], SEEK_SET) = 0
109
+ read(3, "A,\0\0\0aeabi\0\1\"\0\0\0\0056\0\6\6\10\1\t\2\n\3\f\1\22\4\24"..., 45) = 45
110
+ _llseek(3, 16748, [16748], SEEK_SET) = 0
111
+ read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 960) = 960
112
+ _llseek(3, 16424, [16424], SEEK_SET) = 0
113
+ read(3, "A,\0\0\0aeabi\0\1\"\0\0\0\0056\0\6\6\10\1\t\2\n\3\f\1\22\4\24"..., 45) = 45
114
+ _llseek(3, 16748, [16748], SEEK_SET) = 0
115
+ read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 960) = 960
116
+ _llseek(3, 16424, [16424], SEEK_SET) = 0
117
+ read(3, "A,\0\0\0aeabi\0\1\"\0\0\0\0056\0\6\6\10\1\t\2\n\3\f\1\22\4\24"..., 45) = 45
118
+ fstat64(3, {st_mode=S_IFREG|0644, st_size=17708, ...}) = 0
119
+ mmap2(NULL, 81964, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6f12000
120
+ mprotect(0xb6f16000, 61440, PROT_NONE) = 0
121
+ mmap2(0xb6f25000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0xb6f25000
122
+ close(3) = 0
123
+ munmap(0xb6f54000, 54) = 0
124
+ openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
125
+ fstat64(3, {st_mode=S_IFREG|0644, st_size=80552, ...}) = 0
126
+ mmap2(NULL, 80552, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb6efe000
127
+ close(3) = 0
128
+ openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libdl.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
129
+ read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0 \n\0\0004\0\0\0"..., 512) = 512
130
+ _llseek(3, 8688, [8688], SEEK_SET) = 0
131
+ read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1080) = 1080
132
+ _llseek(3, 8340, [8340], SEEK_SET) = 0
133
+ read(3, "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24"..., 47) = 47
134
+ _llseek(3, 8688, [8688], SEEK_SET) = 0
135
+ read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1080) = 1080
136
+ _llseek(3, 8340, [8340], SEEK_SET) = 0
137
+ read(3, "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24"..., 47) = 47
138
+ _llseek(3, 8688, [8688], SEEK_SET) = 0
139
+ read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1080) = 1080
140
+ _llseek(3, 8340, [8340], SEEK_SET) = 0
141
+ read(3, "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24"..., 47) = 47
142
+ fstat64(3, {st_mode=S_IFREG|0644, st_size=9768, ...}) = 0
143
+ mmap2(NULL, 73924, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6eeb000
144
+ mprotect(0xb6eed000, 61440, PROT_NONE) = 0
145
+ mmap2(0xb6efc000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0xb6efc000
146
+ close(3) = 0
147
+ openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libc.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
148
+ read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\300x\1\0004\0\0\0"..., 512) = 512
149
+ _llseek(3, 1293204, [1293204], SEEK_SET) = 0
150
+ read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 2800) = 2800
151
+ _llseek(3, 1289788, [1289788], SEEK_SET) = 0
152
+ read(3, "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24"..., 47) = 47
153
+ _llseek(3, 1293204, [1293204], SEEK_SET) = 0
154
+ read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 2800) = 2800
155
+ _llseek(3, 1289788, [1289788], SEEK_SET) = 0
156
+ read(3, "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24"..., 47) = 47
157
+ _llseek(3, 1293204, [1293204], SEEK_SET) = 0
158
+ read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 2800) = 2800
159
+ _llseek(3, 1289788, [1289788], SEEK_SET) = 0
160
+ read(3, "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24"..., 47) = 47
161
+ _llseek(3, 1293204, [1293204], SEEK_SET) = 0
162
+ read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 2800) = 2800
163
+ _llseek(3, 1289788, [1289788], SEEK_SET) = 0
164
+ read(3, "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24"..., 47) = 47
165
+ _llseek(3, 1293204, [1293204], SEEK_SET) = 0
166
+ read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 2800) = 2800
167
+ _llseek(3, 1289788, [1289788], SEEK_SET) = 0
168
+ read(3, "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24"..., 47) = 47
169
+ _llseek(3, 1293204, [1293204], SEEK_SET) = 0
170
+ read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 2800) = 2800
171
+ _llseek(3, 1289788, [1289788], SEEK_SET) = 0
172
+ read(3, "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24"..., 47) = 47
173
+ fstat64(3, {st_mode=S_IFREG|0755, st_size=1296004, ...}) = 0
174
+ mmap2(NULL, 1364764, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6d9d000
175
+ mprotect(0xb6ed5000, 65536, PROT_NONE) = 0
176
+ mmap2(0xb6ee5000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x138000) = 0xb6ee5000
177
+ mmap2(0xb6ee8000, 8988, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6ee8000
178
+ close(3) = 0
179
+ set_tls(0xb6f564d0) = 0
180
+ mprotect(0xb6ee5000, 8192, PROT_READ) = 0
181
+ mprotect(0xb6efc000, 4096, PROT_READ) = 0
182
+ mprotect(0xb6f25000, 4096, PROT_READ) = 0
183
+ mprotect(0x20000, 4096, PROT_READ) = 0
184
+ mprotect(0xb6f57000, 4096, PROT_READ) = 0
185
+ munmap(0xb6efe000, 80552) = 0
186
+ brk(NULL) = 0x344000
187
+ brk(0x365000) = 0x365000
188
+ openat(AT_FDCWD, "./libhelloworld.so", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
189
+ read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\0\0\0\0004\0\0\0"..., 512) = 512
190
+ close(3) = 0
191
+ --- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=NULL} ---
192
+ +++ killed by SIGSEGV +++
193
+ Segmentation fault
194
+ ```
195
+
80
196
  ### 補足情報(FW/ツールのバージョンなど)
81
197
  - OnePlus One(ARM32)(Android 9)
82
198
  CPU: Snapdragon 801(MSM8974PRO-AC)

11

修正

2021/04/06 05:05

投稿

daiki002
daiki002

スコア68

title CHANGED
File without changes
body CHANGED
File without changes

10

修正

2021/04/06 04:53

投稿

daiki002
daiki002

スコア68

title CHANGED
File without changes
body CHANGED
@@ -79,8 +79,11 @@
79
79
 
80
80
  ### 補足情報(FW/ツールのバージョンなど)
81
81
  - OnePlus One(ARM32)(Android 9)
82
- - Raspberry Pi 4 Model B(ARM32)(Raspbian 32bit GNU/Linux 10 (buster))
82
+ CPU: Snapdragon 801(MSM8974PRO-AC)
83
83
 
84
+ - Raspberry Pi 4 Model B Rev 1.2 (ARM32)(Raspbian 32bit GNU/Linux 10 (buster))
85
+ CPU: BCM2711(Cortex-A72)
86
+
84
87
  ```cmd
85
88
  $ ndk-build -version
86
89
  GNU Make 4.2.1

9

修正

2021/04/06 04:44

投稿

daiki002
daiki002

スコア68

title CHANGED
File without changes
body CHANGED
@@ -79,7 +79,7 @@
79
79
 
80
80
  ### 補足情報(FW/ツールのバージョンなど)
81
81
  - OnePlus One(ARM32)(Android 9)
82
- - Raspberry Pi 4 Model B(ARM32)(Raspbian GNU/Linux 10 (buster))
82
+ - Raspberry Pi 4 Model B(ARM32)(Raspbian 32bit GNU/Linux 10 (buster))
83
83
 
84
84
  ```cmd
85
85
  $ ndk-build -version

8

修正

2021/04/06 04:35

投稿

daiki002
daiki002

スコア68

title CHANGED
@@ -1,1 +1,1 @@
1
- AndroidOSの共有ライブラリはUbuntuで利用できないのでしょうか?
1
+ AndroidOSの共有ライブラリはLinuxで利用できないのでしょうか?
body CHANGED
File without changes

7

修正

2021/04/06 04:34

投稿

daiki002
daiki002

スコア68

title CHANGED
File without changes
body CHANGED
@@ -6,6 +6,8 @@
6
6
  AndroidもLinuxの一種のはずです。
7
7
  しかしなぜLinuxのRaspbian(Raspberry Pi 4)では共有ライブラリ(.soファイル)を利用するとSegmentation faultになるのでしょうか?
8
8
 
9
+ LinuxであればELF形式でアーキテクチャが一致していれば動作すると思っていたのですが、そもそもこの理解が間違っているのでしょうか?
10
+
9
11
  ### 発生している問題・エラーメッセージ
10
12
  ```bash
11
13
  $ ./a.out

6

修正

2021/04/06 04:34

投稿

daiki002
daiki002

スコア68

title CHANGED
File without changes
body CHANGED
@@ -4,7 +4,7 @@
4
4
  (Java経由の呼び出しでは無く、実行ファイルから共有ライブラリの関数を呼び出す形です。)
5
5
 
6
6
  AndroidもLinuxの一種のはずです。
7
- しかしなぜRaspberry Pi 4では共有ライブラリ(.soファイル)を利用するとSegmentation faultになるのでしょうか?
7
+ しかしなぜLinuxのRaspbian(Raspberry Pi 4)では共有ライブラリ(.soファイル)を利用するとSegmentation faultになるのでしょうか?
8
8
 
9
9
  ### 発生している問題・エラーメッセージ
10
10
  ```bash

5

修正

2021/04/06 04:32

投稿

daiki002
daiki002

スコア68

title CHANGED
File without changes
body CHANGED
@@ -14,7 +14,7 @@
14
14
  ```
15
15
 
16
16
  ### libhelloworld.soのソースコード
17
- - jnk/Android.mk
17
+ - jni/Android.mk
18
18
  ```Makefile
19
19
  LOCAL_PATH := $(call my-dir)
20
20
 

4

修正

2021/04/06 04:32

投稿

daiki002
daiki002

スコア68

title CHANGED
File without changes
body CHANGED
@@ -46,7 +46,7 @@
46
46
 
47
47
  ### 実行ファイル(a.out)のソースコード
48
48
  ```c
49
- // AndroidOS用はndk-buildでした。
49
+ // AndroidOS用はndk-buildでコンパイルした。
50
50
  // Raspberry Pi用は以下コマンドでコンパイルした。
51
51
  // gcc main.c -ldl
52
52
  #include <stdio.h>

3

修正

2021/04/06 04:28

投稿

daiki002
daiki002

スコア68

title CHANGED
File without changes
body CHANGED
@@ -76,7 +76,7 @@
76
76
  Android, LinuxどちらもARM32環境で一致しています。
77
77
 
78
78
  ### 補足情報(FW/ツールのバージョンなど)
79
- - Android OnePlus One(ARM32)
79
+ - OnePlus One(ARM32)(Android 9)
80
80
  - Raspberry Pi 4 Model B(ARM32)(Raspbian GNU/Linux 10 (buster))
81
81
 
82
82
  ```cmd

2

修正

2021/04/06 04:27

投稿

daiki002
daiki002

スコア68

title CHANGED
File without changes
body CHANGED
@@ -46,7 +46,9 @@
46
46
 
47
47
  ### 実行ファイル(a.out)のソースコード
48
48
  ```c
49
+ // AndroidOS用はndk-buildでビルドした。
50
+ // Raspberry Pi用は以下コマンドでコンパイルした。
49
- // gcc main.c -ldl^C
51
+ // gcc main.c -ldl
50
52
  #include <stdio.h>
51
53
  #include <dlfcn.h>
52
54
 

1

修正

2021/04/06 04:25

投稿

daiki002
daiki002

スコア68

title CHANGED
File without changes
body CHANGED
@@ -4,7 +4,7 @@
4
4
  (Java経由の呼び出しでは無く、実行ファイルから共有ライブラリの関数を呼び出す形です。)
5
5
 
6
6
  AndroidもLinuxの一種のはずです。
7
- しかしなぜUbuntuでは共有ライブラリ(.soファイル)を利用するとSegmentation faultになるのでしょうか?
7
+ しかしなぜRaspberry Pi 4では共有ライブラリ(.soファイル)を利用するとSegmentation faultになるのでしょうか?
8
8
 
9
9
  ### 発生している問題・エラーメッセージ
10
10
  ```bash
@@ -75,7 +75,7 @@
75
75
 
76
76
  ### 補足情報(FW/ツールのバージョンなど)
77
77
  - Android OnePlus One(ARM32)
78
- - Raspberry Pi 4 Model B(ARM32)(aspbian GNU/Linux 10 (buster))
78
+ - Raspberry Pi 4 Model B(ARM32)(Raspbian GNU/Linux 10 (buster))
79
79
 
80
80
  ```cmd
81
81
  $ ndk-build -version