2013-06-01 28 views
5

Tôi đã viết một chương trình máy chủ khách hàng đơn giản, trong đó máy chủ chấp nhận tin nhắn từ khách hàng và in chi tiết của họ (mã hóa cứng cho bài tập của tôi). Tôi đã viết nó lần đầu tiên trên một máy Linux (Fedora), và nó hoạt động hoàn toàn ổn. Nhưng khi tôi cố gắng biên dịch mã máy chủ trên mac của tôi, nó không hoạt động.chương trình máy khách của khách hàng trong C

Dưới đây là thông điệp sau khi biên dịch:

Undefined symbols for architecture x86_64: 
    "_error", referenced from: 
     _main in cc3O1167.o 
ld: symbol(s) not found for architecture x86_64 
collect2: ld returned 1 exit status 

bất cứ ai có thể giúp tôi ra với điều này?

+0

Thực sự khó khăn để giúp bạn với điều này, bạn có thể sử dụng một thư viện C tiêu chuẩn khác gây ra vấn đề của Symbol không tồn tại .. Tôi khuyên bạn nên chạy ld với cờ -lc. –

+0

Bạn có vấn đề tương thích. Là Fedora 32bit của bạn? – ka2m

+0

Tách chương trình của bạn xuống mức tối thiểu để tái tạo sự cố, sau đó đăng mã đó vào đây. Tôi có một máy Mac, nhưng không thể giúp bạn mà không có bất kỳ mã nào. –

Trả lời

0

chức năng error của bạn có lẽ là trong tập tin khác so với tập tin chính, bạn đã bao gồm tuyên bố của mình nhưng không thực hiện nó:

Cố gắng biên dịch như thế này:

g++ main.c -l<filetolink> 

filetolink là tên của tệp chứa việc triển khai hàm error (không có phần mở rộng)

Tham chiếu: C - Undefined symbols for architecture x86_64 when compiling on Mac OSX Lion Dường như có nhiều giải pháp cho t vấn đề của mình khi googling dòng lỗi đầu tiên

3

Đặt này ở phía trên cùng của tập tin chính của bạn:

#ifdef __APPLE__ 
# define error printf 
#endif 
1

Từ "người đàn ông 3 lỗi":

These functions and variables are GNU extensions, and should not be 
    used in programs intended to be portable. 

Vì vậy, không sử dụng chức năng này trong các chương trình cần phải làm việc trên các hệ thống không phải của GNU hoặc cung cấp thay thế của riêng bạn.

Các vấn đề liên quan