1. 程式人生 > >C++和C執行庫

C++和C執行庫

1. linux C 執行庫 libc.so/libc.a C++ 執行庫 libstdc++.so/libstdc++.a windows C執行庫libcmt.lib/msvcr90.dll 90指的是版本,新版本可能是100或者110字尾 C++執行庫libcpmt.lib/msvcp90.dll C++的執行庫依賴C的執行庫 [[email protected] home]# ldd /usr/lib/gcc/x86_64-redhat-linux/4.4.4/libstdc++.so linux-vdso.so.1 => (0x00007fff671ff000) libm.so.6 => /lib64/libm.so.6 (0x0000003423200000) libc.so.6 => /lib64/libc.so.6 (0x0000003422a00000) /lib64/ld-linux-x86-64.so.2 (0x0000003422200000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x000000342f200000)

2. 這裡用到了兩個常用的依賴庫檢視工具 linux: ldd windows: dependency walker 平時在VS2010的上開發的應用程式,可能需要vs2010執行庫的支援,這時候就需要安裝這個庫,如果不方便安裝,其實我們直接把動態庫msvcr100.dll msvcp100.dll直接加進來也是可以的,然後使用dependency檢查應用程式所依賴的庫是否完全,若遺失則再補全。相當於一個綠化的過程了。
另外補充一點: 在C:\Windows\System32下的msvcrXX.dll msvcpXX.dll 是64位的庫 C:\Windows\SysWOW64 下是32位的庫,這一點很容易誤導人,不過這些可以通過dependency來檢查。 msvcrXXd.dll msvcpXXd.dll 後面名字以d結尾的動態庫是debug版本的程式所依賴的庫
3. C++執行庫依賴C執行庫,除此之外庫中就是C++的一些特性的支援功能了, new/delete, stl, 異常處理,流, 名稱空間等等,C++區別於C的部分都在這裡。但C++並不是簡單的包含C,很多功能還是依賴於C庫,比如流和檔案操作。
4. 實際上 libc和msvct是C標準的超集合,它們還包含了其他的操作,比如執行緒。 對於其他的知識,可以參考《程式設計師的自我修養》 13章 執行庫實現 這部分的內容,這篇文章也是受此啟發,加了一點自己的經驗總結而言。