
lubuntuで作成したa.outを相手先のLinuxMintで動かしたらエラーになり動きません。
もちろん、a.outを作成した元となる xxx.c を相手先のLinuxMintにコピーしてそこで
gcc xxx.c
を実行してできたa.outは、LinuxMintで正常に動作します。
やりたいことは、手元のlubuntuで相手先のLinuxMintで正常に動く a.out を作成することです。
コンパイルするときのオプション指定で、他のLinuxでも動くa.outの作り方あるのでしょうか?
ちなみに、xxx.c の中で使用しているライブラリ(?)は、
#include <stdio.h>
#include <string.h>
#include <ctype.h>
だけです
No.3ベストアンサー
- 回答日時:
発生するエラーのご提示がないため状況の詳細が不明ですが、多くはWindowsで言うダイナミックリンクライブラリに相当する動的リンクライブラリ(.so.x)ファイルが「見つからない。
」や「バージョンが気に入らない。」などのエラーと思われます。エラーの発生を防ぐためには(.so.x)ファイルの参照を止めてしまう以外にないと思います。
gccをご使用ならコンパイル時に...
-static
オプションを指定します。同様なオプションは幾種類かありますのでgccのマニュアルでご確認ください。
ここでは次の例で違いを示してみます。
#include <stdio.h>
#include <stdlib.h>
int main ( void )
{
printf ( "HelloWorld\n" );
return ( 0 );
}
"test.cpp" 13L, 108B 書込み
% g++ test.cpp
% ls -l
合計 20K
-rwxr-xr-x 1 T_Kaneko kaneko 16K 2月 14 11:39 a.out*
-rw-r--r-- 1 T_Kaneko kaneko 108 2月 14 11:37 test.cpp
% ./a.out
HelloWorld
%
%
この実行ファイルが参照する動的ライブラリは以下のとおりです。
% ldd ./a.out
linux-vdso.so.1 (0x00007ffd87ffe000)
libstdc++.so.6 => /usr/GNU/gcc-10.1.0/lib/../lib64/libstdc++.so.6 (0x00007fd8cdb2a000)
libm.so.6 => /usr/lib/x86_64-linux-gnu/libm.so.6 (0x00007fd8cd9e6000)
libgcc_s.so.1 => /usr/GNU/gcc-10.1.0/lib/../lib64/libgcc_s.so.1 (0x00007fd8cd9ca000)
libc.so.6 => /usr/lib/x86_64-linux-gnu/libc.so.6 (0x00007fd8cd7f6000)
/lib64/ld-linux-x86-64.so.2 (0x00007fd8cdd01000)
%
%
%
%
%
今度はstaticライブラリを指定します。
% g++ -static test.cpp
% ls -l
合計 980K
-rwxr-xr-x 1 T_Kaneko kaneko 976K 2月 14 11:38 a.out*
-rw-r--r-- 1 T_Kaneko kaneko 108 2月 14 11:37 test.cpp
実行ファイルのサイズの違いにご注意を!
./a.out
HelloWorld
% ldd ./a.out
動的実行ファイルではありません
%
以下の点にご注意ください。
●アプリやライブラリインストール時、多くの場合ダイナミックリンクライブラリ(.so.x)ファイルだけがインストールされるようです。少なくとも私の環境(debian)ではそうです。
コンパイル時staticライブラリ"libB.a"ファイルが見つからずにエラーが発生する時は、各OSのリポジトリの中で"libB.a"で検索したりすることで足りないソフトウエアを注意深く探します。
●Xwindowに関係するライブラリなどではさらに複雑になります。
ある程度慣れることが必要です。
回答ありがとうございます
gcc -static
で作成したa.outを相手先のLinuxMintで動かしたら正常に動きました
助かりました!
No.2
- 回答日時:
共有ライブラリを使っているからだろうと思いますが、そうでないオプション類を忘れました。
回答ありがとうございます。
No3さんの回答の通り
gcc -static
で作成したa.outを相手先のLinuxMintで動かしたら正常に動きました
ありがとうございました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
” OS ビルド ” の意味が分か...
-
VB6とInputManソフトの関係
-
1 つ以上の複数回定義されてい...
-
セミコロンについて
-
漢字のコメントをはずすとコン...
-
gccの「-l」オプションとライブ...
-
エラー Permission denied
-
外部シンボル "_main"は未解決です
-
ILSpyで、デコンパイルできない。
-
C言語でヘッダファイルにグロー...
-
includeと#include
-
VBAを何回も作り直して、容量が...
-
誰も解決策はわからないかもし...
-
エクセルVBAではRound...
-
cygwin でstackdump
-
「fatal error C1189」を回避す...
-
Makefile作成時の拡張子.oとは?
-
C言語をコンパイル後の膨大なフ...
-
C++のhppファイルをCでinclude
-
「猫でもわかるプログラミング...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
” OS ビルド ” の意味が分か...
-
VBAを何回も作り直して、容量が...
-
エクセルVBAではRound...
-
Makefile作成時の拡張子.oとは?
-
「fatal error C1189」を回避す...
-
C言語でヘッダファイルにグロー...
-
ILSpyで、デコンパイルできない。
-
<math.h>があるのにsqrtが・...
-
外部シンボル "_main"は未解決です
-
マクロ コンパイルがグレーバック
-
セミコロンについて
-
コンパイルエラー:ユーザ定義...
-
【VC++6.0(MFC)】警告「LINK : ...
-
1 つ以上の複数回定義されてい...
-
C言語でmからnまでの合計を求め...
-
VB6とInputManソフトの関係
-
コンパイルに失敗しました、と...
-
ExcelVBAで『ByRef 引数の型が...
-
漢字のコメントをはずすとコン...
-
C言語のコンパイルができません
おすすめ情報