2016-03-28 22 views
-3

Görevim: Bazı c/C++ projelerini derleyeceğim, böylece bir .exe dosyası alacağım, ayrıca c/C++ dosyaları için betik bazı "nesne dosyalarını" üretecektir..exe nasıl derlenir ve oluşturulur?

Ne okuduğumdan gcc bash derleyicisini kullanmam gerektiğini anladım. Online olarak başarı olmadan gcc referanslarını inceledim. Bazı kod satırlarım var:

gcc -c $1.$2 -o obj/$1.o 
     for i in $(seq $3) 
     do 
      gcc -c src/source$i.$2 -o obj/source$i.o 
     done 
     gcc $1.o obj/* -o $1 

Bu iyi mi? Tam olarak "-c" ve "-o" parametreleri ne yapar? Bu veya öğreticiler için herhangi bir bağlantısı var mı, lütfen?

+0

Çalıştırılabilir dosya, diyor. Bağlayıcıyı neden kullanmamak gerekiyor? – Marko

+0

Yürütücü oluşturmak istiyorsanız linker'i çalıştırmalısınız – Ance

+0

http://www.cyberciti.biz/faq/compiling-c-program-and-creating-executable-file/ Şunu bir daha gözden geçirdim: – Ance

cevap

1

Linux'un dosya uzantıları üzerinde belirli bir sıkılığı yoktur, bu nedenle ikili dosyalar normalde .exe ile bitmez C/C++ kaynak dosyasından ikili dosyalar oluşturmak için. Gc için .C ve g ++ için .cpp gibi bir derleyiciye ihtiyacınız var. Bunlar dosyam adlı bir ikili oluşturmak için adlandırılmış myfile.c bir c kaynak dosyasını derlemek için

sudo zypper install gcc g++ 

opensuse

yılında örneğin sizin Linux dağıtımı depo yöneticisinden elde edilebilir. Bir C++ kaynak dosyası için Uygun başlık dosyaları oluşturmak ve daha sonra 2 c kaynak dosyalarından bir statik kütüphane oluşturmak için bunları örneğin bağlantı statik veya paylaşılan kitaplık oluşturmak için ar komutunu kullanabilirsiniz birkaç C kaynak dosyaları için

$cd /path/to/myfile/ 
$g++ -o myfile myfile.cpp 

.

$cd /path/to/sources/ 
$gcc -c myfile1.c myfile2.c 
$ar rs libmyfiles.a myfile1.o myfile2.o 
$gcc -o main main.c -I/path/to/header-files/ -L/path/to/libmyfiles.a 

-c bayrak .o libmyfiles.a denilen statik kütüphaneye ar komutuyla arşivlenir ve endekslidir onaltılık rutinleri içeren (nesne dosyası) oluşturur. paylaşılan kütüphaneler .so ile biter ve pozisyondan bağımsız kodla (-lfpic) üretilmeleri gerekir. Bununla birlikte, pthread.h başlıklı başlık dosyasını kullandığınızda varolan bir paylaşımlı kütüphaneye örneğin pthread'e bağlantı vermek için kütüphaneye aşağıdaki şekilde bağlantı verebilirsiniz.

$gcc -o threadc thread.c -lpthread 

mainprog çıktı ikili dosyanın adı olabilir komut satırından

$./mainprog 

ana programı çalıştırın. Ayrıca büyük projeleri derlemek için gereken iş miktarını kolaylaştıran maketlere de bakabilirsiniz. da derleyici bayrakları

man gcc 

veya KDE kullanıyorsanız hakkında bilgi içeren kılavuz sayfaları vardır. iyi biçimlendirilmiş çıktı için konqueror tarayıcı adres çubuğuna ekleyebilirsiniz.

+0

İnsanoğlu, o zamanlar için zypper'a geri dönmeliydin ... –

+0

Elbette daha detaylı olmak için. –

İlgili konular