2009-10-01 25 views
9

Tôi đang gặp một số vấn đề với QT nó xây dựng với tùy chọn "-lrt"cho câu hỏi thường gặp với QtCreator [mac os]

Tôi đang sử dụng mac os 10.6 với QT creator 1.2.1, heeeeeeelp !

này là đầy đủ build lệnh:

g ++ -headerpad_max_install_names -o AMiningCoreTest main.o tokenizer.o DictionnaryToolBox.o mysql.o btree.o BTreeDataTable.o tcaccess.o -L/Library/Frameworks -L/usr/lib/mysql -lmysqlclient -L/usr/local/lib/-ltokyocabinet -lz -lbz2 -lrt -lpthread -lm -lc

và nó kết thúc với

ld: thư viện không tìm thấy cho -lrt collect2: ld trở về 1 trạng thái thoát

Trả lời

9

Tại sao chương trình cần librt?

Tôi biết rằng một số nền tảng (Solaris cần lưu ý) yêu cầu librt đối với một số chức năng có thể tồn tại trong các thư viện khác trong hệ điều hành của bạn. (sem_init() và cộng sự là như thế này)

Bạn có thể thử liên kết mà không cần -rt và xem nó có hoạt động hay không.

+1

Có, tôi đã sửa đổi lệnh xây dựng để tắt thư viện -lrt và nó hoạt động :) cảm ơn bạn ^^ – Houssem

13

Các mối liên kết không thể tìm thấy librt mà có lẽ là Posix thư viện mở rộng thời gian thực. Tôi không nghĩ rằng điều này có sẵn trên OSX. Googling cho này từ Apple developer lists

Câu hỏi từ danh sách

Tôi đang cố gắng để xây dựng một mô phỏng được phát triển tại trường đại học của tôi (trên Linux) và tôi nhận được lỗi bởi mối liên kết mà dường như không thể tìm thấy librt.a - trong mã được sử dụng cho clock_gettime() và tôi muốn biết nếu có một cổng của thư viện như vậy, hoặc một số chức năng tương tự khác mà cho phép tôi để biên dịch ngay cả trên Mac OS X.

trả lời librt .a là Hệ thống V tên của thư viện có chứa các chức năng tùy chọn POSIX Advanced Realtime [RT} Option. Chức năng cụ thể mà bạn đang hỏi về là một phần của tùy chọn [TMR]. Nếu Mac OS X hỗ trợ nó, nó sẽ nằm trong libSystem.B, dylib, không phải librt.a. Chức năng trong câu hỏi không được Mac OS X. hỗ trợ

Mã của bạn nên kiểm tra xem tùy chọn triển khai thực hiện mọi thứ vượt quá tiêu chuẩn UNIX được triển khai trong OS đích, và nếu không, sử dụng một giao diện khác.

+1

Vui vẻ đủ, POSIX yêu cầu '-lrt' hoạt động. Dường như Apple đã giải quyết điều này bằng cách bỏ qua lá cờ đó khi trình biên dịch được gọi với lệnh tiêu chuẩn POSIX 'c99'. http://pubs.opengroup.org/onlinepubs/9699919799/utilities/c99.html#tag_20_11_13_01 –