Chúc mừng tất cả,Xây dựng các thư viện tĩnh trên Mac bằng CMake và GCC?
Tôi có thư viện tĩnh mà sau này tôi liên kết với đơn đăng ký của mình. Môi trường phát triển của tôi là CMake, GCC (Linux, Mac), MinGW (Windows).
Tôi có thể biên dịch thư viện tĩnh mà không gặp bất kỳ sự cố nào trên Linux và Windows. (Tôi thậm chí có thể xây dựng các thư viện được chia sẻ trong ứng dụng của tôi trên Mac).
EDIT: Tôi đã biên soạn thư viện dưới dạng thư viện được chia sẻ và nó hoạt động tốt !!
Tôi đã cấu hình CMakeFile như sau để xây dựng thư viện tĩnh:
add_library(centi STATIC ${base_srcs} ${crv_srcs} ${node_srcs} ${trnk_srcs} ${defl_srcs} ${infl_srcs} ${track_srcs} ${callback_srcs} ${extract_srcs})
Trong liên kết giai đoạn, nó mang lại cho các lỗi sau đây và xây dựng "libcenti.a" bằng cách nào đó.
Linking C static library
lib/libcenti.a /usr/bin/ranlib: file:
lib/libcenti.a(crv_in_rgn_to_bnry_img.c.o)
has no symbols /usr/bin/ranlib: file:
lib/libcenti.a(crv_initialize_by_circle.c.o)
has no symbols /usr/bin/ranlib: file:
lib/libcenti.a(crv_initialize_flgs.c.o)
has no symbols /usr/bin/ranlib: file:
lib/libcenti.a(crv_nodal_interval_min_and_max.c.o)
has no symbols /usr/bin/ranlib: file:
lib/libcenti.a(crv_remove_all_nodes.c.o)
has no symbols /usr/bin/ranlib: file:
lib/libcenti.a(crv_reset_nodal_forces.c.o)
has no symbols /usr/bin/ranlib: file:
lib/libcenti.a(crv_set_center_coords.c.o)
has no symbols /usr/bin/ranlib: file:
lib/libcenti.a(crv_set_left_ptch_rgn_pixs.c.o)
has no symbols /usr/bin/ranlib: file:
lib/libcenti.a(crv_set_out_rgn_mean_and_var.c.o)
has no symbols /usr/bin/ranlib: file:
lib/libcenti.a(crv_set_para.c.o) has
no symbols /usr/bin/ranlib: file:
lib/libcenti.a(crv_set_right_ptch_rgn_pixs.c.o)
has no symbols /usr/bin/ranlib: file:
lib/libcenti.a(crv_to_in_rgn_hist.c.o)
has no symbols /usr/bin/ranlib: file:
lib/libcenti.a(crv_to_out_rgn_pixs.c.o)
has no symbols /usr/bin/ranlib: file:
lib/libcenti.a(trnk_initialize_by_circle.c.o)
has no symbols /usr/bin/ranlib: file:
lib/libcenti.a(trnk_initialize_by_image_frame.c.o)
has no symbols /usr/bin/ranlib: file:
lib/libcenti.a(trnk_stk_paint_nodes_and_pixs.c.o)
has no symbols /usr/bin/ranlib: file:
lib/libcenti.a(trnk_stk_to_inner_defl_ordn.c.o)
has no symbols
Nhưng khi tôi liên kết ở trên thư viện với ứng dụng của tôi, nó mang lại cho "biểu tượng Không xác định" lỗi:
Undefined symbols:
"_setActiveDrawingTrunk", referenced
from:
RzPluginAlgoCnty::initCallBacks()
in RzPluginAlgoCnty.cpp.o
RzPluginAlgoCnty::clearCallBacks()
in RzPluginAlgoCnty.cpp.o
_trnk_trck_ordn in libcenti.a(trnk_trck_ordn.c.o)
_trnk_trck_ordn in libcenti.a(trnk_trck_ordn.c.o)
_trnk_trck_ordn in libcenti.a(trnk_trck_ordn.c.o)
_trnk_trck_ordn in libcenti.a(trnk_trck_ordn.c.o)
_bg_trnk_trck_ordn in libcenti.a(trnk_trck_ordn.c.o)
_bg_trnk_trck_ordn in libcenti.a(trnk_trck_ordn.c.o)
_extract_contour_update_tracking in
libcenti.a(extract_contour_update_tracking.c.o)
_extract_contour_update_tracking in
libcenti.a(extract_contour_update_tracking.c.o)
"_updateCurveUICallBack", referenced
from:
RzPluginAlgoCnty::initCallBacks()
in RzPluginAlgoCnty.cpp.o
RzPluginAlgoCnty::initBulkCallBacks()
in RzPluginAlgoCnty.cpp.o
RzPluginAlgoCnty::clearCallBacks()
in RzPluginAlgoCnty.cpp.o
_bg_trnk_trck_ordn in libcenti.a(trnk_trck_ordn.c.o)
_bg_trnk_trck_ordn in libcenti.a(trnk_trck_ordn.c.o)
_crv_update_1time in libcenti.a(crv_update_ordn.c.o)
_crv_update_1time in libcenti.a(crv_update_ordn.c.o) ld:
symbol(s) not found
Bất cứ lời khuyên? Tôi có nên thêm bất kỳ thông số đặc biệt nào khi xây dựng các thư viện tĩnh trên máy Mac không?
CHỈNH SỬA: Tôi đã biên soạn thư viện làm thư viện được chia sẻ và nó hoạt động tốt !!
Đồng thời sửa lỗi này bằng cách biên dịch thành thư viện dùng chung. –
* "Trong giai đoạn liên kết, nó cung cấp cho các lỗi sau và xây dựng" libcenti.a "bằng cách nào đó .... không có biểu tượng" * - Đó không phải là lỗi; chúng là những cảnh báo [vô dụng]. Có lẽ bạn đang sử dụng 'libtool' và không phải' ar' và 'ranlib' trên OS X. Tôi nghĩ rằng có một tùy chọn để ngăn chặn nó, nhưng tôi không thể tìm thấy nó vào lúc này. Ngoài ra, hãy xem [Im lặng "mục lục trống" cảnh báo] (https://stackoverflow.com/q/27602998/608639). – jww