Cả RedHat và SUSE đều có truyền thống Linux doanh nghiệp lâu đời và quản lý để có được các gói đó được sản xuất và thử nghiệm cho chúng. Thời gian trôi qua, sẽ có nhiều ví dụ về các gói đã được thử nghiệm để hoạt động trên Ubuntu. Trên thực tế, nhiều gói như vậy kể từ năm ngoái đã được thử nghiệm để hoạt động với Ubuntu. Khi Canonical thỏa thuận với nhiều nhà cung cấp hơn, sẽ có nhiều gói được chứng nhận Ubuntu hơn.
Đối với câu hỏi đầu tiên của bạn: Nếu bạn muốn tạo một chương trình chạy trên tất cả các bản phân phối, hãy tạo một tệp thực thi tĩnh (so với động). Một statically-linked
tệp thực thi không phụ thuộc vào các thư viện hệ thống, do đó có thể hoạt động giữa các bản phân phối, miễn là kiến trúc (như Intel / AMD) là như nhau.
Đây là một chương trình,
int main(void)
{
printf("Hello, World!\n");
return 0;
}
Hãy biên dịch như bình thường,
$ gcc helloworld.c -o helloworld
$ ./helloworld
Hello, World!
$ ldd helloworld
libc.so.6 => /lib/libc.so.6 (0x00007f3cc3481000)
...
$
$ gcc helloworld.c -static -o helloworld_static
$ ./helloworld
Hello, World!
$ ldd helloworld_static
not a dynamic executable
$
Vậy, bạn có thể làm gì với chương trình VHDL đó? Lấy tệp .rpm và chuyển đổi nó thành .deb bằng cách sử dụng người ngoài hành tinh . Sau đó, cài đặt. Nếu nó hoạt động, bạn ổn. Nếu nó không hoạt động, sử dụng ldd
để tìm ra tập tin thư viện bị thiếu. Trong trường hợp xấu nhất, hãy tạo một máy ảo cho các bản phân phối Linux khác và chạy chương trình ở đó.