Cou氏の徒然日記

ほのぼの日記ブログです。

RHEL: C++のコンパイル

続いて、C++のソースのコンパイル環境を生成していましたが、

make[1]: g++: Command not found 
make[1]: *** [obj/Linux/test.o] Error 127

のエラー。

「あれっ? gccパッケージは入れたのになあ…」

と思っていたので、念のため確認してみても…

[root@coutest]# rpm -aq | grep gcc 
gcc-4.8.3-9.el7.x86_64
libgcc-4.8.3-9.el7.x86_64

…と入っていました。

 

ただ、よくよく考えると、g++ (C++のコンパイラ) は、「gcc」パッケージではなく「gcc-c++」パッケージを入れないといけないようで…。

これも忘れていましたね。

 

ということで、さっそく「gcc-c++」をインストール

 

[root@coutest]# yum install gcc-c++

=====================================================================
Package           Arch       Version       Repository        Size
=====================================================================
Installing:
 gcc-c++          x86_x64    4.8.3-9.el7   TestRepository    7.2 M
Installing for deppendencies:
 libstdc++-devel  x86_x64    4.8.3-9.el7   TestRepository    1.5 M

 

そしてコンパイルしてみると…

/usr/bin/ld: /home/cou/src/obj/ThreadTest.o: undefined reference to symbol 'pthread_create@@GLIBC_2.2.5'
/usr/bin/ld: note: 'pthread_create@@GLIBC_2.2.5' is defined is DSO /lib64/libpthread.so.0 so try adding it to the linker command line
/lib64/libpthread.so.0: could not read symbols: Invalid operation
collect2: error: id returned 1 exit status

今度はシンボルが見つからないエラー…。

RHELの古いバージョンだと動いていたので、gcc-c++のバージョンが変わったことが影響しているのでしょうか。このあたりはちょっとわからないですね。

ただ、これはコンパイルオプションに

-pthread

をつけてコンパイルしないと、リンクがうまくできないようです。

何か不便ですね…。実際追加することでうまくいきました。

 

ホント、こういうのって一回作ると、再構築する機会がなかなかないので、すぐに忘れてしまいます。

備忘録として残していないと、また次回忘れますからね。