質問編集履歴

7

文章を修正

2021/11/07 08:23

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -43,6 +43,8 @@
43
43
 
44
44
 
45
45
  参考サイト: [https://www.yunabe.jp/docs/static_library.html](https://www.yunabe.jp/docs/static_library.html)
46
+
47
+ 参考サイト2: [https://www.yokoweb.net/dokuwiki/programing/c-language/gcc-programing/gcc-library-link-order](https://www.yokoweb.net/dokuwiki/programing/c-language/gcc-programing/gcc-library-link-order)
46
48
 
47
49
 
48
50
 

6

文章を修正

2021/11/07 08:23

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- Makefile 静的ライブラリをリンクして参照する方法が知りたい。
1
+ Makefile 静的ライブラリをリンクすると定義されていませんと表示される原因が知りたい。
test CHANGED
@@ -88,12 +88,6 @@
88
88
 
89
89
 
90
90
 
91
- OBJ :=$(FRAMEWORK_OBJ) $(GAME_OBJ)
92
-
93
-
94
-
95
-
96
-
97
91
  FRAMEWORK_DEP :=$(wildcard $(FRAMEWORK_DEP_DIR)/*.d)
98
92
 
99
93
  GAME_DEP :=$(wildcard $(GAME_DEP_DIR)/*.d)
@@ -104,13 +98,15 @@
104
98
 
105
99
  $(PRG): $(GAME_OBJ)
106
100
 
107
- ar rcs $(STATIC_LIB) $(FRAMEWORK_OBJ)
108
-
109
- $(CXX) -lrt $^ -o $@ -ldl -lGLESv2 -lassimp -L/usr/local/lib -lGLU -lGL -lglfw3 -pthread -lGL -lGLEW -lfreetype -lX11 -L -l$(STATIC_LIB)
101
+ $(CXX) $^ -o $@ -ldl -lGLESv2 -lassimp -L/usr/local/lib -lGLU -lGL -lglfw3 -pthread -lGL -lGLEW -lfreetype -lX11 -L -l$(STATIC_LIB)
110
102
 
111
103
 
112
104
 
105
+
106
+
113
- #$(STATIC_LIB): $(FRAMEWORK_OBJ)
107
+ $(STATIC_LIB): $(FRAMEWORK_OBJ)
108
+
109
+ ar rc $@ $^
114
110
 
115
111
 
116
112
 

5

文章を修正

2021/11/07 07:32

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- Makefile 静的ライブラリをリンクしてにの定義されていませんと表示される原因が知りたい。
1
+ Makefile 静的ライブラリをリンクして参照す方法が知りたい。
test CHANGED
@@ -1,4 +1,4 @@
1
- 提示コードですがFrameWorkとGame二つのプロジェクトがありその内のFrameWorkのobjファイルを.aファイル出力してそれをGameプロジェクトでリンクして使いたいのですが以下のエラー出ます。これはなぜでしょうか?
1
+ 提示コードですがFrameWorkとGame二つのプロジェクトがありその内のFrameWorkのobjファイルを.aファイル出力してそれをGameプロジェクトでリンクして使いたいのですが以下のエラー出ます。これはなぜでしょうか? どうやってライブラリを参照するのでしょうか?
2
2
 
3
3
 
4
4
 

4

文章を修正

2021/11/07 06:36

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- Makefile .aファ出力してリンクしてビルドす方法が知りたい。
1
+ Makefile 静的ラブラリをリンクしてにの定義されていませんと表示される原因が知りたい。
test CHANGED
File without changes

3

文章を修正

2021/11/07 06:22

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -22,39 +22,29 @@
22
22
 
23
23
  $ make
24
24
 
25
- make: *** 'TopViewAction' に必要なターゲット 'Game/obj/Scene.o' make するルールがありません. 中止.
25
+ ar rcs FrameWork.a FrameWork/obj/Render.o FrameWork/obj/Shape.o FrameWork/obj/Sprite.o FrameWork/obj/Transform.o FrameWork/obj/Camera.o FrameWork/obj/Init.o FrameWork/obj/Resource.o FrameWork/obj/Text.o FrameWork/obj/Shader.o FrameWork/obj/Model.o FrameWork/obj/Simple.o FrameWork/obj/Help.o FrameWork/obj/Window.o
26
+
27
+ g++ -lrt Game/obj/Scene.o Game/obj/Entry.o Game/obj/Game.o Game/obj/Camera.o Game/obj/Main.o Game/obj/LightCube.o Game/obj/Player.o Game/obj/Actor.o Game/obj/Ground.o -o TopViewAction -ldl -lGLESv2 -lassimp -L/usr/local/lib -lGLU -lGL -lglfw3 -pthread -lGL -lGLEW -lfreetype -lX11 -L -lFrameWork.a
28
+
29
+ Game/obj/Camera.o: 関数 `Camera::Update()' 内:
30
+
31
+ Camera.cpp:(.text+0x11b): `FrameWork::Camera::setLook(glm::vec<3, float, (glm::qualifier)0>)' に対する定義されていない参照です
32
+
33
+ Camera.cpp:(.text+0x136): `FrameWork::Camera::setPosition(glm::vec<3, float, (glm::qualifier)0>)' に対する定義されていない参照です
34
+
35
+ Game/obj/Main.o: 関数 `main' 内:
36
+
37
+ Main.cpp:(.text+0x49): `FrameWork::Init(glm::vec<2, int, (glm::qualifier)0>, glm::vec<2, int, (glm::qualifier)0>, char const*)' に対する定義されていない参照です
38
+
39
+
26
40
 
27
41
  ```
28
42
 
29
43
 
30
44
 
45
+ 参考サイト: [https://www.yunabe.jp/docs/static_library.html](https://www.yunabe.jp/docs/static_library.html)
31
46
 
32
47
 
33
-
34
-
35
-
36
-
37
-
38
-
39
- 参考サイト: [https://www.yunabe.jp/docs/static_library.html](https://www.yunabe.jp/docs/static_library.html)
40
-
41
- ##### 該当コード
42
-
43
- ```
44
-
45
- $(PRG): $(GAME_OBJ)
46
-
47
- $(CXX) $^ -o $@ -ldl -lGLESv2 -lassimp -L/usr/local/lib -lGLU -lGL -lglfw3 -pthread -lGL -lGLEW -lfreetype -lX11 -l$(STATIC_LIB)
48
-
49
-
50
-
51
- $(STATIC_LIB): $(FRAMEWORK_OBJ)
52
-
53
- ar rcs $^ $@
54
-
55
-
56
-
57
- ```
58
48
 
59
49
 
60
50
 
@@ -110,17 +100,17 @@
110
100
 
111
101
 
112
102
 
103
+
104
+
113
105
  $(PRG): $(GAME_OBJ)
114
106
 
107
+ ar rcs $(STATIC_LIB) $(FRAMEWORK_OBJ)
108
+
115
- $(CXX) $^ -o $@ -ldl -lGLESv2 -lassimp -L/usr/local/lib -lGLU -lGL -lglfw3 -pthread -lGL -lGLEW -lfreetype -lX11 -l$(STATIC_LIB)
109
+ $(CXX) -lrt $^ -o $@ -ldl -lGLESv2 -lassimp -L/usr/local/lib -lGLU -lGL -lglfw3 -pthread -lGL -lGLEW -lfreetype -lX11 -L -l$(STATIC_LIB)
116
110
 
117
111
 
118
112
 
119
- $(STATIC_LIB): $(FRAMEWORK_OBJ)
113
+ #$(STATIC_LIB): $(FRAMEWORK_OBJ)
120
-
121
- ar rcs $^ $@
122
-
123
-
124
114
 
125
115
 
126
116
 
@@ -136,7 +126,7 @@
136
126
 
137
127
 
138
128
 
139
- $(Game_OBJ_DIR)/%.o: Game/source/%.cpp
129
+ $(GAME_OBJ_DIR)/%.o: Game/source/%.cpp
140
130
 
141
131
  $(CXX) -std=c++2a -I/usr/local/include/freetype2 -I/usr/local/include/glm -I/usr/include/libpng16 -I/usr/local/include -pthread -c -MMD -MP $< -o $@
142
132
 

2

文章を修正

2021/11/07 06:16

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- Makefile 二つプロジェクトてビルドする方法が知りたい。片方は .aファイルを出力したい。
1
+ Makefile .aファイル出力しリンクしてビルドする方法が知りたい。
test CHANGED
@@ -1,8 +1,10 @@
1
- Makefile二つのプロジェクトGame,FrameWorkがあるのですが二つのプロジェクトを分てビルドしたいのですがその場合はどうやってMakefileを記述すればいいでしょうか?またFrameWorkプロジェクトの方は.aライブラを生成したいです。
1
+ 提示コードすがFrameWorkとGame二つのプロジェクトがありそののFrameWorkのobjファイルを.aファイル出力してそれをGameプロジェクトンクて使いたいですが以下のエラー出ますこれはなぜでしょうか?
2
2
 
3
3
 
4
4
 
5
- 参考サイト: [https://www.fixes.pub/program/194511.html](https://www.fixes.pub/program/194511.html)
5
+ ##### 環境
6
+
7
+ CentOS GUI
6
8
 
7
9
 
8
10
 
@@ -10,11 +12,59 @@
10
12
 
11
13
 
12
14
 
15
+
16
+
17
+
18
+
19
+ ##### 端末
20
+
21
+ ```
22
+
23
+ $ make
24
+
25
+ make: *** 'TopViewAction' に必要なターゲット 'Game/obj/Scene.o' を make するルールがありません. 中止.
26
+
27
+ ```
28
+
29
+
30
+
31
+
32
+
33
+
34
+
35
+
36
+
37
+
38
+
39
+ 参考サイト: [https://www.yunabe.jp/docs/static_library.html](https://www.yunabe.jp/docs/static_library.html)
40
+
41
+ ##### 該当コード
42
+
43
+ ```
44
+
45
+ $(PRG): $(GAME_OBJ)
46
+
47
+ $(CXX) $^ -o $@ -ldl -lGLESv2 -lassimp -L/usr/local/lib -lGLU -lGL -lglfw3 -pthread -lGL -lGLEW -lfreetype -lX11 -l$(STATIC_LIB)
48
+
49
+
50
+
51
+ $(STATIC_LIB): $(FRAMEWORK_OBJ)
52
+
53
+ ar rcs $^ $@
54
+
55
+
56
+
57
+ ```
58
+
59
+
60
+
13
61
  ##### Makefile
14
62
 
15
63
  ```
16
64
 
17
- PRG :=GL
65
+ PRG :=TopViewAction
66
+
67
+ STATIC_LIB :=FrameWork.a
18
68
 
19
69
  FRAMEWORK_SRC_DIR :=FrameWork/source/
20
70
 
@@ -48,9 +98,9 @@
48
98
 
49
99
 
50
100
 
51
- #OBJ :=$(FRAMEWORK_OBJ) $(GAME_OBJ)
101
+ OBJ :=$(FRAMEWORK_OBJ) $(GAME_OBJ)
52
102
 
53
- OBJ :=$(FRAMEWORK_OBJ)
103
+
54
104
 
55
105
 
56
106
 
@@ -60,11 +110,19 @@
60
110
 
61
111
 
62
112
 
63
- $(PRG): $(OBJ)
113
+ $(PRG): $(GAME_OBJ)
64
114
 
65
- #$(CXX) $^ -o $@ -ldl -lGLESv2 -lassimp -L/usr/local/lib -lGLU -lGL -lglfw3 -pthread -lGL -lGLEW -lfreetype -lX11
115
+ $(CXX) $^ -o $@ -ldl -lGLESv2 -lassimp -L/usr/local/lib -lGLU -lGL -lglfw3 -pthread -lGL -lGLEW -lfreetype -lX11 -l$(STATIC_LIB)
66
116
 
117
+
118
+
119
+ $(STATIC_LIB): $(FRAMEWORK_OBJ)
120
+
67
- ar rcs test.a $(OBJ)
121
+ ar rcs $^ $@
122
+
123
+
124
+
125
+
68
126
 
69
127
 
70
128
 
@@ -73,6 +131,8 @@
73
131
  $(CXX) -std=c++2a -I/usr/local/include/freetype2 -I/usr/local/include/glm -I/usr/include/libpng16 -I/usr/local/include -pthread -c -MMD -MP $< -o $@
74
132
 
75
133
  -include $(FRAMEWORK_DEP)
134
+
135
+
76
136
 
77
137
 
78
138
 
@@ -86,7 +146,7 @@
86
146
 
87
147
  clean:
88
148
 
89
- rm -f ./$(FRAMEWORK_OBJ_DIR)/*.o *.out ./$(FRAMEWORK_OBJ_DIR)/*.d *.a $(PRG)
149
+ rm -f ./$(FRAMEWORK_OBJ_DIR)/*.o *.out ./$(FRAMEWORK_OBJ_DIR)/*.d *.a $(STATIC_LIB)
90
150
 
91
151
  rm -f ./$(GAME_OBJ_DIR)/*.o *.out ./$(GAME_OBJ_DIR)/*.d *.a $(PRG)
92
152
 

1

文章を修正

2021/11/07 05:56

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- Makefile 静的ライブラリ作成する方法が知りたい。
1
+ Makefile 二つプロジェクト分てビルドする方法が知りたい。片方は .aファイルを出力したい。
test CHANGED
@@ -1,12 +1,8 @@
1
- Makefileで二つのプロジェクトGame,FrameWorkがあるのですがFramWorkのプロジェクトを静的ライブラリにてそれをGameプロジェクトで使いたいのですがどうやって静的ライブラリ作成できるのでしょうか?参考サト通りコマンド入れましたが下記のエラー出ます。
1
+ Makefileで二つのプロジェクトGame,FrameWorkがあるのですが二つのプロジェクトを分てビルドしたいのですがその場合はどうやってMakefile記述すればいいのでしょうか?またFrameWorkプロジェクトの方は.aラブラリ生成したいです。
2
2
 
3
3
 
4
4
 
5
-
6
-
7
- #####知りたいこと
8
-
9
- Makefileで静的ライブラリを作る方法
5
+ 参考サイト: [https://www.fixes.pub/program/194511.html](https://www.fixes.pub/program/194511.html)
10
6
 
11
7
 
12
8
 
@@ -14,81 +10,7 @@
14
10
 
15
11
 
16
12
 
17
- #####端末
18
-
19
- ```
20
-
21
- $ make
22
-
23
- ar rcs obj/Render.o obj/Shape.o obj/Sprite.o obj/Transform.o obj/Camera.o obj/Init.o obj/Resource.o obj/Text.o obj/Shader.o obj/Model.o obj/Simple.o obj/Help.o obj/Window.o -o FrameWork -ldl -lGLESv2 -lassimp -L/usr/local/lib -lGLU -lGL -lglfw3 -pthread -lGL -lGLEW -lfreetype -ldl -lX11
24
-
25
- ar: 二つの異なった操作オプションが指定されました
26
-
27
- make: *** [Makefile:12: FrameWork] エラー 1
28
-
29
-
30
-
31
- ```
32
-
33
-
34
-
35
- 参考サイト:[ https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/developer_guide/creating-libraries-gcc](https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/developer_guide/creating-libraries-gcc)
36
-
37
-
38
-
39
- ##### FrameWork Makefile
40
-
41
- ```
42
-
43
- PRG :=FrameWork
44
-
45
- SRC_DIR :=source
46
-
47
- OBJ_DIR :=obj
48
-
49
- DEP_DIR :=obj
50
-
51
- DEP :=$(wildcard $(DEP_DIR)/*.d)
52
-
53
- SRC :=$(wildcard $(SRC_DIR)/*.cpp)
54
-
55
- OBJ :=$(addprefix $(OBJ_DIR)/,$(patsubst %.cpp,%.o,$(notdir $(SRC))))
56
-
57
-
58
-
59
-
60
-
61
- $(PRG): $(OBJ)
62
-
63
- #$(CXX) $^ -o $@ -ldl -lGLESv2 -lassimp -L/usr/local/lib -lGLU -lGL -lglfw3 -pthread -lGL -lGLEW -lfreetype -ldl -lX11
64
-
65
- ar rcs $^ -o $@ -ldl -lGLESv2 -lassimp -L/usr/local/lib -lGLU -lGL -lglfw3 -pthread -lGL -lGLEW -lfreetype -ldl -lX11
66
-
67
-
68
-
69
-
70
-
71
- $(OBJ_DIR)/%.o: source/%.cpp
72
-
73
- $(CXX) -std=c++2a -I/usr/local/include/freetype2 -I/usr/local/include/glm -I/usr/include/libpng16 -I/usr/local/include -pthread -c -MMD -MP $< -o $@
74
-
75
- -include $(DEP)
76
-
77
-
78
-
79
-
80
-
81
- clean:
82
-
83
- rm -f ./$(OBJ_DIR)/*.o *.out ./$(OBJ_DIR)/*.d *.a $(PRG)
84
-
85
-
86
-
87
- ```
88
-
89
-
90
-
91
- #####Game,FrameWork二つのプロジェクトをビルドするMakefile
13
+ ##### Makefile
92
14
 
93
15
  ```
94
16
 
@@ -98,13 +20,15 @@
98
20
 
99
21
  GAME_SRC_DIR :=Game/source/
100
22
 
23
+ FRAMEWORK_OBJ_DIR :=FrameWork/obj
24
+
101
- OBJ_DIR :=obj
25
+ GAME_OBJ_DIR :=Game/obj
102
26
 
103
27
 
104
28
 
105
- FRAMEWORK_DEP_DIR :=obj
29
+ FRAMEWORK_DEP_DIR :=$(FRAMEWORK_OBJ_DIR)
106
30
 
107
- GAME_DEP_DIR :=obj
31
+ GAME_DEP_DIR :=$(GAME_OBJ_DIR)
108
32
 
109
33
 
110
34
 
@@ -118,13 +42,17 @@
118
42
 
119
43
 
120
44
 
121
- FRAMEWORK_OBJ :=$(addprefix $(OBJ_DIR)/,$(patsubst %.cpp,%.o,$(notdir $(FRAMEWORK_SRC))))
45
+ FRAMEWORK_OBJ :=$(addprefix $(FRAMEWORK_OBJ_DIR)/,$(patsubst %.cpp,%.o,$(notdir $(FRAMEWORK_SRC))))
122
46
 
123
- GAME_OBJ :=$(addprefix $(OBJ_DIR)/,$(patsubst %.cpp,%.o,$(notdir $(GAME_SRC))))
47
+ GAME_OBJ :=$(addprefix $(GAME_OBJ_DIR)/,$(patsubst %.cpp,%.o,$(notdir $(GAME_SRC))))
124
48
 
125
49
 
126
50
 
127
- OBJ :=$(FRAMEWORK_OBJ) $(GAME_OBJ)
51
+ #OBJ :=$(FRAMEWORK_OBJ) $(GAME_OBJ)
52
+
53
+ OBJ :=$(FRAMEWORK_OBJ)
54
+
55
+
128
56
 
129
57
  FRAMEWORK_DEP :=$(wildcard $(FRAMEWORK_DEP_DIR)/*.d)
130
58
 
@@ -134,19 +62,21 @@
134
62
 
135
63
  $(PRG): $(OBJ)
136
64
 
137
- $(CXX) $^ -o $@ -ldl -lGLESv2 -lassimp -L/usr/local/lib -lGLU -lGL -lglfw3 -pthread -lGL -lGLEW -lfreetype -lX11
65
+ #$(CXX) $^ -o $@ -ldl -lGLESv2 -lassimp -L/usr/local/lib -lGLU -lGL -lglfw3 -pthread -lGL -lGLEW -lfreetype -lX11
66
+
67
+ ar rcs test.a $(OBJ)
138
68
 
139
69
 
140
70
 
141
- $(OBJ_DIR)/%.o: FrameWork/source/%.cpp
71
+ $(FRAMEWORK_OBJ_DIR)/%.o: FrameWork/source/%.cpp
142
72
 
143
- $(CXX) ar rc -std=c++2a -I/usr/local/include/freetype2 -I/usr/local/include/glm -I/usr/include/libpng16 -I/usr/local/include -pthread -c -MMD -MP $< -o $@
73
+ $(CXX) -std=c++2a -I/usr/local/include/freetype2 -I/usr/local/include/glm -I/usr/include/libpng16 -I/usr/local/include -pthread -c -MMD -MP $< -o $@
144
74
 
145
75
  -include $(FRAMEWORK_DEP)
146
76
 
147
77
 
148
78
 
149
- $(OBJ_DIR)/%.o: Game/source/%.cpp
79
+ $(Game_OBJ_DIR)/%.o: Game/source/%.cpp
150
80
 
151
81
  $(CXX) -std=c++2a -I/usr/local/include/freetype2 -I/usr/local/include/glm -I/usr/include/libpng16 -I/usr/local/include -pthread -c -MMD -MP $< -o $@
152
82
 
@@ -156,7 +86,11 @@
156
86
 
157
87
  clean:
158
88
 
89
+ rm -f ./$(FRAMEWORK_OBJ_DIR)/*.o *.out ./$(FRAMEWORK_OBJ_DIR)/*.d *.a $(PRG)
90
+
159
- rm -f ./$(OBJ_DIR)/*.o *.out ./$(OBJ_DIR)/*.d *.a $(PRG)
91
+ rm -f ./$(GAME_OBJ_DIR)/*.o *.out ./$(GAME_OBJ_DIR)/*.d *.a $(PRG)
92
+
93
+
160
94
 
161
95
 
162
96