![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
MinGW環境でC++の勉強を始めました。
簡単なサンプルのコンパイルをしてみたのですが、ソースファイルを一括してコンパイルすると問題ないのですが、個別にコンパイルしようとするとエラーがでてしまいまいます。
原因や対処法をご存じの方がいらっしゃいましたらご教示下さい。
一括でコンパイルすると問題なし
bash-3.1$ g++ -Wl,--enable-auto-import main.cpp point.cpp -lstdc++
個別にコンパイルしようとした場合
bash-3.1$ g++ -Wl,--enable-auto-import -o main.o main.cpp
C:\DOCUME~1\user\LOCALS~1\Temp\ccZrVmLp.o:main.cpp:(.text+0x16): undefined reference to `Point::Point()'
C:\DOCUME~1\user\LOCALS~1\Temp\ccZrVmLp.o:main.cpp:(.text+0x32): undefined reference to `Point::Point(int, int)'
C:\DOCUME~1\user\LOCALS~1\Temp\ccZrVmLp.o:main.cpp:(.text+0x3e): undefined reference to `Point::println()'
C:\DOCUME~1\user\LOCALS~1\Temp\ccZrVmLp.o:main.cpp:(.text+0x4a): undefined reference to `Point::println()'
collect2: ld returned 1 exit status
※ -Wl,--enable-auto-importは、他の警告を消すために入れました、無くても質問の問題に変化はありませんでした。
サンプルソース
---main.cpp---
#include<iostream>
#include "point.h"
using namespace std;
int main(){
Point p1,p2(4,5);
p1.println();
p2.println();
return 0;
}
-----------
---point.h---
class Point {
private:
int x, y;
static int count;
public:
Point();
Point( int, int );
void set( int, int );
void println();
};
-------------
---point.cpp---
#include<iostream>
#include"point.h"
using namespace std;
int Point::count;
Point::Point(){
this->x = this->y = 0;
++count;
}
Point::Point(int ax, int ay){
this->x = ax;
this->y = ay;
++count;
}
void Point::set( int ax, int ay ){
this->x = ax;
this->y = ay;
}
void Point::println(){
cout << "Point(" << x << "," << y << ")" << endl;
}
-----------
bash-3.1$ g++ -v
Using built-in specs.
COLLECT_GCC=D:\MinGW\bin\g++.exe
COLLECT_LTO_WRAPPER=d:/mingw/bin/../libexec/gcc/mingw32/4.5.0/lto-wrapper.exe
Target: mingw32
Configured with: ../gcc-4.5.0/configure --enable-languages=c,c++,ada,fortran,obj
c,obj-c++ --disable-sjlj-exceptions --with-dwarf2 --enable-shared --enable-libgo
mp --disable-win32-registry --enable-libstdcxx-debug --enable-version-specific-r
untime-libs --disable-werror --build=mingw32 --pref
No.2ベストアンサー
- 回答日時:
コンパイルの各段階で、どこまで実行するか、は -o の出力ファイル名はまったく関係なく、オプションの有無で決まります。
もともとのgccのターゲットであるunix系OSでは、実行ファイルに決まった拡張子なんてありませんから。 main.o ってファイル名でも実行ファイルになります。
実行制御関係のオプションが無ければ、ソースコードからリンクして実行ファイルにするまでの一連の作業が実行されます。
分割コンパイルでオブジェクトファイルまでコンパイルを実行するなら -c (小文字)オプションを付けます。
g++ -Wl,--enable-auto-import -c main.cpp
# 今回の場合は、 main.cpp → main.oができるので、-oはあってもなくてもOK
教えて頂いたとおり -cをつけて問題なくmain.oを作成、最終的に実行ファイルを作成することができました。
gcc についての挙動についても理解を深めることができました。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 未解決の外部シンボル _printfが関数_mainで参照されました 1 2022/09/18 15:28
- FX・外国為替取引 mql4のコンパイルエラー箇所の修正お願いします。 1 2023/03/15 16:14
- Java java 引数 戻り値のあるメソッド 3 2023/02/12 06:23
- C言語・C++・C# C++初心者です stirng 2 2022/09/20 20:43
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- その他(プログラミング・Web制作) 十進BASICでの再帰についての質問です。 2 2022/11/18 09:17
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
” OS ビルド ” の意味が分か...
-
MinGWのg++で分割コンパイルエラー
-
漢字のコメントをはずすとコン...
-
Makefile作成時の拡張子.oとは?
-
1 つ以上の複数回定義されてい...
-
クリティカルエラー Expressio...
-
外部シンボル "_main"は未解決です
-
Visual Basic 2008にCソースコ...
-
windowsでLinuxで作成したソー...
-
<math.h>があるのにsqrtが・...
-
[c++] <pthread.h>がinclude で...
-
ILSpyで、デコンパイルできない。
-
python エラー
-
エクセルのエラーメッセージ「4...
-
アプリケーションのDLLファイル...
-
<unistd.h>をVisualStudioでつ...
-
Excel VBAのCSVファイルマージ...
-
visual studio 2008 のデバッグ...
-
res://ieframe.dll/について
-
gccを使ってのリンク時のライブ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAを何回も作り直して、容量が...
-
<math.h>があるのにsqrtが・...
-
Makefile作成時の拡張子.oとは?
-
C言語でヘッダファイルにグロー...
-
エクセルVBAではRound...
-
1 つ以上の複数回定義されてい...
-
「fatal error C1189」を回避す...
-
ILSpyで、デコンパイルできない。
-
” OS ビルド ” の意味が分か...
-
外部シンボル "_main"は未解決です
-
セミコロンについて
-
C++コンパイル時に『 C1083: in...
-
マクロ コンパイルがグレーバック
-
[c++] <pthread.h>がinclude で...
-
コンパイルエラー:ユーザ定義...
-
ビルドとリビルドの違いを教え...
-
クリティカルエラー Expressio...
-
sys/types.hの必要性について
-
【VC++6.0(MFC)】警告「LINK : ...
-
PRO*C コンパイルエラー
おすすめ情報