ホームページ > 運用・保守 > Linuxの運用と保守 > Linux環境でCプログラムをコンパイルして実行するにはどうすればよいですか? (詳しい説明)

Linux環境でCプログラムをコンパイルして実行するにはどうすればよいですか? (詳しい説明)

青灯夜游
リリース: 2018-10-25 16:47:56
転載
4847 人が閲覧しました

この記事の内容は、Linux 環境で C プログラムをコンパイルして実行する方法を紹介することです。 (詳しい説明)。困っている友人は参考にしていただければ幸いです。

1 単一ファイルのコンパイルと実行

次の内容を含む main.c ファイルを作成します:

#include <stdio.h>#include <stdlib.h>int main(void){
printf("Hello world!\n");return 0;
};
ログイン後にコピー

コンパイル:

gcc -o main main.o
ログイン後にコピー

実行:

root@ubuntu:/ybg/python# ./main
Input an integer:10sum=55
ログイン後にコピー

2 複数のファイルのコンパイルと実行
次の内容の sum.c ファイルを作成します:

#include <stdio.h>#include <stdlib.h>int sum(int x){int i, result=0;for(i=0; i<=x; i++){
result+=i;
}if(x > 100)
exit(-1);return result;
};
ログイン後にコピー

main を作成します。次の内容の c ファイル :

#include <stdio.h>#include <stdlib.h>int main(void){int x;
printf("Input an integer:\n");
scanf("%d", &x);
printf("sum=%d\n", sum(x));return 0;
};
ログイン後にコピー

Compile

gcc -c sum.c -fPIC -o sum.ogcc -c main.c -fPIC -o main.o
ログイン後にコピー

実行可能ファイルを生成します。ファイル名は main

gcc -o main sum.o main.o
ログイン後にコピー
ログイン後にコピー

実行プログラム

./main
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

実行結果は上記と同じです。

3 ダイナミック リンク ライブラリ メソッドを使用します。

ダイナミック リンク ライブラリを生成します。

gcc sum.o -shared -o sum.so
ログイン後にコピー

実行可能ファイル、ファイルを生成します。 name は main

gcc -o main sum.o main.o
ログイン後にコピー
ログイン後にコピー

Execute

./main
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

次のエラーが報告された場合、生成された sum.so がデフォルトのダイナミック リンク ライブラリ パスに見つからなかったことを意味します

./main: 共有ライブラリのロード中にエラーが発生しました: sum.so: 共有オブジェクト ファイルを開けません: そのようなファイルまたはディレクトリはありません

次のコマンドを実行して、現在のディレクトリをダイナミック リンク ライブラリの検索パス環境変数に追加します

export LD_LIBRARY_PATH=pwd:$LD_LIBRARY_PATH
ログイン後にコピー

再度実行

./main
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

実行結果は上記と同じ

4 Pythonは.soダイナミックリンクライブラリを呼び出します

次の内容を含む test.py ファイルを作成します:

import ctypes
so = ctypes.CDLL('./sum.so')print "so.sum(50) = %d" % so.sum(50)
ログイン後にコピー

Execute

root@ubuntu:/ybg/python# python test.py 
so.sum(50) = 1275
ログイン後にコピー

以上がLinux環境でCプログラムをコンパイルして実行するにはどうすればよいですか? (詳しい説明)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:cnblogs.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート