Jawaban:
Jika ini adalah program sumber tunggal sederhana:
make foo
di mana file sumbernya adalah foo.c atau foo.cpp, dll.
Anda bahkan tidak perlu makefile. Make memiliki cukup aturan bawaan untuk membuat file sumber Anda menjadi executable dengan nama yang sama, minus ekstensi.
Menjalankan executable yang baru saja dibangun sama dengan menjalankan program apa pun - tetapi Anda paling sering perlu menentukan path ke executable karena shell hanya akan mencari apa yang ada di dalam $PATH
untuk menemukan executable, dan paling sering itu tidak termasuk direktori saat ini ( .
).
Jadi untuk menjalankan executable yang dibangun foo
:
./foo
make main.cpp
, tapi make main
.
gcc main.cpp -o main.out
./main.out
Undefined symbols for architecture x86_64
masalah, saya memodifikasi perintah sebagai berikut:, gcc -lstdc++ main.cpp -o main.out
dan itu berfungsi pada Mac saya. via tautan: stackoverflow.com/questions/11852568/…
Ini adalah perintah yang berfungsi pada semua mesin Unix ... Saya menggunakannya di Linux / Ubuntu, tetapi juga berfungsi di OS X. Ketikkan perintah berikut di Terminal.app .
$ g++ -o lab21 iterative.cpp
-o
adalah huruf O bukan nol
lab21
akan menjadi file yang dapat dieksekusi
iterative.cpp
adalah file c ++ Anda
Setelah Anda menjalankan perintah itu ketikkan terminal berikut ini untuk menjalankan program Anda:
$ ./lab21
Dua langkah untuk saya:
pertama:
make foo
kemudian:
./foo
./foo
tidak tahu bagaimana jawaban yang diterima tidak memiliki bagian perintah yang penting ini
Semua eksekusi aplikasi di lingkungan Unix (Linux, Mac OS X, AIX, dll.) Tergantung pada jalur pencarian yang dapat dieksekusi.
Anda dapat menampilkan jalur ini di terminal dengan perintah ini:
echo $ PATH
Pada Mac OS X (secara default) ini akan menampilkan jalur pencarian yang dipisahkan titik dua berikut:
/ usr / bin: / bin: / usr / sbin: / sbin: / usr / local / bin: / usr / X11 / bin
Jadi setiap executable di direktori yang terdaftar dapat dijalankan hanya dengan mengetikkan namanya. Sebagai contoh:
cat mytextfile.txt
Ini menjalankan /bin/cat
dan menampilkan mytextfile.txt ke terminal.
Untuk menjalankan perintah lain yang tidak ada dalam jalur pencarian yang dapat dieksekusi, Anda harus memenuhi syarat untuk dapat dieksekusi. Jadi katakanlah saya mempunyai executable bernama MyProgram di direktori home saya di Mac OS XI yang dapat sepenuhnya memenuhi syarat seperti:
/ Pengguna / oliver / MyProgram
Jika Anda berada di lokasi yang dekat dengan program yang ingin Anda jalankan, Anda dapat memenuhi syarat nama dengan jalur parsial. Misalnya, jika MyProgram
berada di direktori /Users/oliver/MyProject
I dan saya berada di direktori home saya, saya dapat memenuhi syarat nama yang dapat dieksekusi seperti ini, dan menjalankannya:
MyProject / MyProgram
Atau katakan saya berada di direktori /Users/oliver/MyProject2
dan saya ingin menjalankan /Users/oliver/MyProject/MyProgram
saya dapat menggunakan jalur relatif seperti ini, untuk menjalankannya:
../MyProject/MyProgram
Demikian pula jika saya berada di direktori yang sama dengan MyProgram
saya harus menggunakan jalur relatif "direktori saat ini". Direktori saat ini Anda berada adalah karakter periode diikuti dengan garis miring. Sebagai contoh:
./MyProgram saya
Untuk menentukan direktori yang sedang Anda gunakan gunakan pwd
perintah ini.
Jika Anda biasanya meletakkan program di hard disk Anda yang ingin Anda jalankan tanpa harus menyebutkan nama mereka. Misalnya, jika Anda memiliki direktori "bin" di direktori home Anda untuk skrip shell yang digunakan secara teratur dari program lain, mungkin bijaksana untuk mengubah jalur pencarian yang dapat dieksekusi.
Ini bisa dilakukan dengan mudah dengan membuat atau mengedit .bash_profile
file yang ada di direktori home Anda dan menambahkan baris:
#!/bin/sh
export PATH=$PATH:~/bin
Di sini karakter tilde (~) digunakan sebagai jalan pintas untuk / Users / oliver. Perhatikan juga bahwa baris hash bang (#!) Harus menjadi baris pertama dari file (jika belum ada). Perhatikan juga bahwa teknik ini mengharuskan shell login Anda menjadi bash (default pada Mac OS X dan sebagian besar distribusi Linux). Perhatikan juga bahwa jika Anda ingin agar program Anda yang diinstal ~/bin
digunakan untuk preferensi pada sistem yang dapat dieksekusi, Anda harus menyusun ulang pernyataan ekspor sebagai berikut:
export PATH=~/bin:$PATH
Ryan, saya mengubah ini menjadi jawaban daripada komentar, karena sepertinya saya terlalu singkat. Lakukan semua ini di "Terminal".
Untuk menggunakan kompiler G ++, Anda perlu melakukan ini:
Arahkan ke direktori tempat Anda menyimpan file * .cpp.
cd ~/programs/myprograms/
(~ adalah jalan pintas untuk rumah Anda, yaitu / Users / Ryan / programs / myprograms /, ganti dengan lokasi yang sebenarnya Anda gunakan.)
Kompilasi
g++ input.cpp -o output.bin
(output.bin dapat berupa apa saja dengan ekstensi apa pun, sungguh. bin hanya umum di unix.)
Seharusnya tidak ada yang dikembalikan jika berhasil, dan tidak apa - apa . Umumnya Anda mendapatkan pengembalian atas kegagalan.
Namun, jika Anda mengetik ls
, Anda akan melihat daftar file di direktori yang sama. Misalnya Anda akan melihat folder lain, input.cpp dan output.bin
Dari dalam direktori, sekarang jalankan dengan ./outbut.bin
Cara ringkas untuk melakukan itu bisa berupa:
make foo && ./$_
Senang memiliki one-liner sehingga Anda dapat menjalankan kembali executable Anda dengan mudah.
Dengan asumsi direktori saat ini tidak ada di jalur, sintaksnya adalah ./[name of the program]
.
Sebagai contoh ./a.out
Tambahkan berikut ini untuk mendapatkan peringatan terbaik, Anda tidak akan menyesalinya. Jika Anda bisa, kompilasi WISE (peringatan salah)
- Wall -pedantic -Weffc++ -Werror
Untuk mengkompilasi program C atau C ++, ada perintah umum:
make filename
./filename
make akan membuat file sumber Anda menjadi file yang dapat dieksekusi dengan nama yang sama. Tetapi jika Anda ingin menggunakan cara standar, Anda bisa menggunakan kompiler gcc untuk membangun program C & g ++ untuk c ++
Untuk C:
gcc filename.c
./a.out
Untuk C ++:
g++ filename.cpp
./a.out
Gunakan a makefile
. Bahkan untuk proyek yang sangat kecil (= satu file), upaya tersebut mungkin sepadan karena Anda dapat memiliki beberapa set pengaturan kompiler untuk menguji berbagai hal. Debugging dan deployment bekerja lebih mudah dengan cara ini.
Baca make
manual , tampaknya cukup lama pada pandangan pertama tetapi sebagian besar Anda hanya bisa membaca sekilas. Secara keseluruhan, saya butuh beberapa jam dan membuat saya jauh lebih produktif.
Saya menemukan tautan ini dengan arah:
http://www.wesg.ca/2007/11/how-to-write-and-compile-c-programs-on-mac-os-x/
Pada dasarnya Anda melakukannya:
gcc hello.c
./a.out (or with the output file of the first command)
gcc hello.c -o a.out
? Yang melakukan hal yang sama dengan gcc hello.c
.
cukup masukkan di direktori di mana file c / cpp Anda.
untuk mengkompilasi dan menjalankan kode c.
$gcc filename.c
$./a.out filename.c
untuk mengkompilasi dan menjalankan kode c ++.
$g++ filename.cpp
$./a.out filename.cpp
"$" adalah simbol terminal mac default
Untuk mengkompilasi dan menjalankan kode sumber cpp dari terminal Mac kita perlu melakukan hal berikut:
Menjalankan file .C menggunakan terminal adalah proses dua langkah. Langkah pertama adalah mengetikkan gcc di terminal dan menjatuhkan file .C ke terminal, lalu tekan Enter:
username$ gcc /Desktop/test.c
Di langkah kedua, jalankan perintah berikut:
username$ ~/a.out
Untuk menjalankan file c ++, jalankan perintah di bawah ini, Mengasumsikan nama file adalah "main.cpp"
1.Compile untuk membuat file objek dari file c ++.
g++ -c main.cpp -o main.o
2. Karena #include <conio.h>
tidak mendukung di MacOS maka kita harus menggunakan alternatifnya yang mendukung di Mac #include <curses.h>
. Sekarang file objek perlu dikonversi ke file yang dapat dieksekusi. Untuk menggunakan curses.h
kita harus menggunakan perpustakaan -lcurses
.
g++ -o main main.o -lcurses
3. Sekarang jalankan executable.
./main