Bagaimana cara mengkompilasi program C yang menggunakan math.h?

14

Saya mengalami masalah dalam file header math.h dan ketika saya menggunakan fungsi root kuadrat seperti pada sqrt(d). Tetapi kompiler saya tidak mendukung ini. Tolong beri tahu saya tentang masalah ini.

Versi Ubuntu saya adalah 2012.

shreya
sumber
2
Sementara kami menyukai pertanyaan pemrograman - pertanyaannya harus terkait dengan Ubuntu - dapatkah Anda menjelaskan secara detail apa masalahnya di sini - contoh, dll?
fossfreedom
itu seperti sqrt ((x2-x1) * (x2-x1) + (y2-y1) * (y2-y1)) ... kompiler saya tidak mendukung perintah ini
shreya
1
harap balas dengan mengedit pertanyaan Anda. Berikan contoh kode, bagaimana Anda mengkompilasi, versi ubuntu, versi kompiler, pernahkah Anda mencoba melakukan ini pada kompiler / distro lain. Apa yang terjadi dll
fossfreedom
1
@shreya Pertanyaan mengenai masalah dengan kode yang Anda tulis harus menjelaskan masalah khusus - dan menyertakan kode yang valid untuk mereproduksinya - dalam pertanyaan itu sendiri. Lihat SSCCE.org untuk panduan.
Braiam
4
Saya benar-benar tidak berpikir ini di luar topik. Pada banyak OS lainnya, seperti Windows, tidak perlu melewati opsi penghubung khusus untuk menggunakan perpustakaan matematika dalam program C. Bahkan pada beberapa sistem operasi mirip Unix implementasi C library standar tidak memerlukan ini. Ini adalah masalah yang dihadapi banyak pengguna ketika mereka beralih ke sistem GNU / Linux seperti Ubuntu. Saya berharap pertanyaannya ditulis dengan lebih baik untuk memasukkan kesalahan spesifik - jika kita akhirnya mempertimbangkan topik ini maka mungkin kita harus mengeditnya - tetapi ini bukan pertanyaan pemrograman C umum, ini pertanyaan tentang bagaimana menggunakan gccdi Ubuntu .
Eliah Kagan

Jawaban:

24

Tambahkan -lmke akhir gccperintah Anda .

Dengan semua versi terbaru GCC pada sistem GNU / Linux seperti Ubuntu, ketika Anda menggunakan perpustakaan matematika, Anda harus secara eksplisit menautkannya. Itu tidak secara otomatis ditautkan bersama dengan sisa pustaka C standar.

Jika Anda mengkompilasi pada command-line dengan perintah gccatau g++, Anda akan melakukannya dengan meletakkan -lmdi akhir perintah .

Sebagai contoh: gcc -o foo foo.c -lm

Eliah Kagan
sumber
5

Jika Anda akan mengkompilasi program C dengan library math.h di LINUX menggunakan GCC atau G ++ Anda harus menggunakan opsi –lm setelah perintah kompilasi.

gcc xyz.c -o xyz -lm

Sini,

gcc adalah perintah kompiler (nama kompiler)
xyz.c adalah nama file sumber.
-o adalah opsi untuk menentukan file output.
xyz adalah nama file output.
-lm adalah opsi untuk menautkan perpustakaan matematika ( libm ).

untuk lebih jelasnya di sini adalah tautan yang memuat artikel lengkap di situ.
Mengkompilasi program C dengan math.h di Linux.

Mike
sumber
Setelah perintah penautan, bukan perintah kompilasi. (Maaf atas kesalahan, tetapi memperbaikinya membantu memahami situasi lain).
mousomer