Có ai biết tại sao thư viện được khởi tạo trong dlopen() sẽ khởi tạo biến tĩnh do chương trình chính sở hữu hay không. Cả hai chương trình chính và thư viện chia sẻ đều có một bản sao của biến tĩnh, nhưng vì một lý do nào đó thư viện chia sẻ lại khởi tạo bản sao của biến chính của chương trình chính và phá hủy nó, gây ra một segfault khi chương trình chính cố gắng hủy nó.Chương trình chính và Thư viện được chia sẻ khởi tạo cùng một biến tĩnh trong __static_initialization_and_destruction_0
Đây có phải là trường hợp mang tên xấu trong bảng biểu tượng không?
Hrm, có vẻ như tôi gặp sự cố khi triển khai tập lệnh phiên bản và chuyển nó tới trình liên kết. Nó đang phàn nàn về một lỗi cú pháp. Đây là tập lệnh mà tôi đã sử dụng: "{global: local: *;}" Mọi ý tưởng? Tôi đã tìm các ví dụ nhưng tất cả dường như không kiểm tra cú pháp. Hay tốt hơn là đưa chỉ thị __asm__ trực tiếp vào nguồn? – Paul
@Paul - tập lệnh của tôi trông giống như 'VERSION {{global: ...; địa phương *; }; } 'và sau đó tôi chỉ sử dụng tên tệp của tệp đó trên dòng lệnh của trình liên kết. –
@Samuel - Cảm ơn một nhóm, sau khi hoàn thành tập lệnh phiên bản và thêm một vài biểu tượng vào bối cảnh toàn cục, nó hiện hoạt động! – Paul