cuốn sách gpt4 ai đã làm

c - Không thể liên kết thư viện động trong macOS

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 08:04:29 26 4
mua khóa gpt4 Nike

Tôi đang cố gắng sử dụng một thứ gọi là câu nói đùa Thư viện C trong dự án C của tôi. Cho đến nay tôi đã sử dụng Linux bằng cách sửa đổi .Vì thế Phim tài liệu Makefile đã tạo ra một libquirc.dylib.1.0.

quirc/helloquirc.c

#include 
#include


int chính() {

struct quirc *qr;

qr = quirc_new();

nếu (!qr) {
printf("Không cấp phát được bộ nhớ");
}

quirc_destroy(qr);

return 0;
}

Tôi đã tạo các tệp nguồn trên trong thư mục gốc của kho lưu trữ. Tôi đang biên dịch nó bằng lệnh sau:

gcc helloquirc.c -lquirc -L. -Ilib -o helloquirc

Theo sự hiểu biết của tôi,-l cờ chỉ định tên của thư viện động,-L Cờ chỉ định vị trí của thư viện động,-TÔI cờ chỉ định vị trí của tệp tiêu đề,-o Chỉ định tên của tệp thực thi.

Khi tôi chạy lệnh này, tôi gặp lỗi sau:

ld: không tìm thấy thư viện cho -lquirc
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Tôi đã thay đổi bằng cách sử dụng dòng này Makefile

.PHONY: libquirc.dylib
libquirc.dylib: libquirc.$(LIB_VERSION).dylib

libquirc.$(LIB_VERSION).dylib: $(LIB_OBJ)
$(CC) -shared -dynamiclib -o $@ $(LIB_OBJ) $(LDFLAGS) -lm

và sẽ .so.$(LIB_VERSION) Các trường hợp thay đổi khác đối với .$(LIB_VERSION).dylib

câu trả lời hay nhất

câu nói đùa Có điều gì đó không ổn với cách nó được xây dựng. Tên thư viện chính xác phải giống như libquirc.1.0.dylib, với cái tên được gọi là libquirc.dylib liên kết tượng trưng.

Có vẻ như quirc có một tệp tạo tệp viết tay thay vì sử dụng thứ gì đó hợp lý như gyp hoặc cmake. Miễn là bạn không cố gắng xây dựng các thư viện dùng chung trên nhiều nền tảng thì các tệp tạo tệp viết tay đều ổn.

Tuy nhiên, nếu bạn tự biên dịch nó, bạn có thể thấy mọi thứ đơn giản hơn nếu chỉ sử dụng thư viện tĩnh. Nếu bạn không chia sẻ thư viện chia sẻ với bất kỳ ai (nếu không có chương trình nào khác đang sử dụng libquirc củabản sao giống hệt), thì việc có một thư viện dùng chung cũng chẳng ích gì.

Về c - không thể liên kết các thư viện động trong macOS, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/43839041/

26 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress