2016-05-03 40 views
1

爲了解ICU及其API,我編寫了一個示例程序,並且這些代碼將鏈接的庫是-licuuc和-licui18n。這些庫是可用的,因爲libicu-devel.x86_64軟件包已安裝在測試系統上。在運行時需要的ICU文件

對於簡單的使用ICU的預定義的數據,本節:

在我的追求,以瞭解如何ICU庫與我的應用程序,它是針對一個CentOS平臺集成,我碰到這個page迷迷糊糊的,它說數據管理可以安全地跳過。數據內置於與ICU其餘部分一起加載的庫中。應用程序或執行環境不需要特定的操作或設置。

這表示如果應用程序無意添加自己的數據,則可以使用庫中可用的數據。在安裝了ICU我的測試系統,這些都是文件:

$ sudo find . -name "*icu*" 
./opt/rbt_boost/include/boost/regex/icu.hpp 
./lib64/libicui18n.so.42 
./lib64/libicui18n.so.42.1 
./lib64/libicuuc.so.42.1 
./lib64/libicuuc.so.42 
./usr/lib64/libicui18n.so.42 
./usr/lib64/libicule.so 
./usr/lib64/libicuio.so.42 
./usr/lib64/libicutu.so 
./usr/lib64/libiculx.so.42.1 
./usr/lib64/pkgconfig/icu.pc 
./usr/lib64/libicui18n.so 
./usr/lib64/libicui18n.so.42.1 
./usr/lib64/libicule.so.42.1 
./usr/lib64/libicuuc.so.42.1 
./usr/lib64/libiculx.so 
./usr/lib64/libicuuc.so.42 
./usr/lib64/libicuio.so.42.1 
./usr/lib64/icu 
./usr/lib64/libicudata.so.42 
./usr/lib64/libicule.so.42 
./usr/lib64/libicutu.so.42.1 
./usr/lib64/libicuio.so 
./usr/lib64/libicudata.so 
./usr/lib64/libicudata.so.42.1 
./usr/lib64/libiculx.so.42 
./usr/lib64/libicutu.so.42 
./usr/lib64/libicuuc.so 
./usr/bin/icu-config 
./usr/share/icu 
./usr/share/man/man1/icu-config.1.gz 
./var/lib/yum/yumdb/l/e59bf24facac0acba1622a5180d0e2a22dda69c8-libicu-devel-4.2.1-9.1.el6_2-x86_64 
./var/lib/yum/yumdb/l/7062f72703a5afbf894d617b94db3d4769fe643d-libicu-4.2.1-9.1.el6_2-x86_64 

問題:

  1. 以下哪種ICU庫(和文件)應與申請ICU數據能夠被打包在運行時可用?如前所述,我使用libicui18n和libicuuc庫進行鏈接,因此需要存在這些庫。

  2. 除了上述兩個庫之外,libicudata的名字似乎是明顯的候選者。正確?

  3. 是否有可用的libicui18n和libicuuc庫的靜態版本,還是需要構建它?

一般來說,將ICU與產品集成的過程是什麼?

謝謝!

回答

0
  1. ICU總是需要鏈接它的數據庫。
  2. 以下是有關您經過了哪些庫的very general討論。
  3. 必須使用--enable-static選項構建ICU以允許靜態鏈接。

理想情況下,您會希望使用pkg-config來管理您對ICU的鏈接。

如果你是在CentOS,而不是靜態(其頭痛)連接,可以考慮只編譯針對libicu-devel包(使用上述pkg配置),然後在運行時用戶可以只包括適當libicu包。