Tôi gặp vấn đề trong tệp tiêu đề math.h và khi tôi sử dụng hàm căn bậc hai như trong sqrt(d)
. Nhưng trình biên dịch của tôi không hỗ trợ này. Xin tư vấn cho tôi về vấn đề này.
Phiên bản Ubuntu của tôi là 2012.
gcc
trên Ubuntu .
Tôi gặp vấn đề trong tệp tiêu đề math.h và khi tôi sử dụng hàm căn bậc hai như trong sqrt(d)
. Nhưng trình biên dịch của tôi không hỗ trợ này. Xin tư vấn cho tôi về vấn đề này.
Phiên bản Ubuntu của tôi là 2012.
gcc
trên Ubuntu .
Câu trả lời:
Nối -lm
vào cuối gcc
lệnh của bạn .
Với tất cả các phiên bản GCC gần đây trên các hệ thống GNU / Linux như Ubuntu, khi bạn sử dụng thư viện toán học, bạn phải liên kết rõ ràng với nó. Nó không tự động được liên kết đến cùng với phần còn lại của thư viện C tiêu chuẩn.
Nếu bạn đang biên dịch trên dòng lệnh bằng lệnh gcc
hoặc g++
, bạn sẽ thực hiện điều này bằng cách đặt -lm
ở cuối lệnh .
Ví dụ: gcc -o foo foo.c -lm
Nếu bạn định biên dịch chương trình C với thư viện math.h trong LINUX bằng GCC hoặc G ++, bạn sẽ phải sử dụng tùy chọn Nottlm sau lệnh biên dịch.
gcc xyz.c -o xyz -lm
Đây,
gcc là lệnh biên dịch (tên trình biên dịch)
xyz.c là tên tệp nguồn.
-o là một tùy chọn để chỉ định tệp đầu ra.
xyz là tên của tệp đầu ra.
-lm là một tùy chọn để liên kết thư viện toán học ( libm ).
để biết thêm chi tiết ở đây là liên kết chứa bài viết đầy đủ về nó.
Biên dịch chương trình C với math.h trong Linux.