Có vẻ như bạn đang sử dụng thư viện chuẩn làm thư viện được chia sẻ (hành vi mặc định) khi liên kết chương trình ở nhà.
Vì vậy, thay vì thực sự "liên kết" thư viện, trình liên kết của bạn chỉ giải quyết một số biểu tượng và thực hiện một thao tác khác, đồng thời trì hoãn việc tải thư viện thực tế về thời gian chạy.
Khi bạn thực hiện chương trình tại máy tính đại học, trình tải (chương trình thực sự tải chương trình của bạn vào bộ nhớ và ném chủ đề chính) tìm thư viện mà chương trình của bạn cần và cố gắng tải chúng (tìm LD_LIBRARY_PATH
trong linux nếu bạn cảm thấy tò mò).
Vấn đề ở đây là bạn đang liên kết chương trình của bạn ở nhà với một phiên bản của stdlib mà không phải là phiên bản tương tự như những gì bạn có tại trường đại học. Vì vậy, khi bộ nạp tìm cách tìm thư viện, nó không thành công và do đó chương trình của bạn không thể chạy được.
Giải pháp:
a) Để tránh tất cả những vấn đề sử dụng tĩnh liên kết thay vì liên kết động. Tôi không chắc chắn nếu điều này là có thể với stdlib, nhưng tôi nghĩ rằng nó là giá trị để kiểm tra nó (xem: http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html và tìm cờ "-static")
b) Bạn có thể thử để biên dịch chương trình của bạn tại máy tính trường đại học của bạn vì vậy nó sẽ sử dụng phiên bản ở đó.
c) Cố gắng biết phiên bản stdlib nào được cài đặt ở đó và cài đặt cùng phiên bản trong máy biên dịch của bạn.
d) Bạn có thể cố gắng sao chép phiên bản nhà của bạn của stdlib vào cùng một thư mục ứng dụng của bạn.Điều này thường hoạt động vì trình tải có xu hướng tìm kiếm thư viện được chia sẻ trong thư mục ứng dụng hiện tại trước khi tìm trong đường dẫn được đặt trong biến môi trường LD_LIBRARY_PATH
(linux)
Hy vọng điều đó sẽ hữu ích.
P.S .: Ở đây bạn có một giới thiệu tốt đẹp để tĩnh vs chia sẻ/thư viện động http://www.network-theory.co.uk/docs/gccintro/gccintro_25.html
Và đây (http://en.wikipedia.org/wiki/Library_%28computing%29) mô tả thư viện không quá đẹp, nhưng hoàn chỉnh hơn.
phiên bản libstdC++ trong trường đại học là gì? – phoxis
@phoxis, 3.4.8 hoặc cũ hơn, có vẻ như. – bdonlan