1 unstable release

0.1.1 Dec 4, 2023

#1074 in Text processing

24 downloads per month
Used in get-host-ip

MIT license

21KB
514 lines

rust-iconv

iconv链接库的Rust绑定。

Cargo.toml导入依赖

因为已经与crates.io上现有的包重名,所以请直接添加git依赖:

iconv-sys = { git = "https://github.com/stuartZhang/rust-iconv", tag = "0.1.2" }

链接库依赖

简单地讲,需要在操作系统内预置libiconv动态链接库。

Linux操作系统

大部分主流Linux OS都包含有libiconv。若你的Linux OS版本比较早或是compact版而缺失了libiconv也不必慌。按如下方式补装即可:

wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.9.1.tar.gz
tar -xzvf libiconv-1.9.1.tar.gz
cd libiconv-1.9.1.tar.gz
./configure --prefix=/usr/local
sudo make -j8
sudo make install
sudo ln -s /usr/local/lib/libiconv.so /usr/lib/libiconv.so
sudo ln -s /usr/local/lib/libiconv.so.2 /usr/lib/libiconv.so.2

Windows操作系统

要么,从setup直接下载安装包,并本地安装之。缺点就是会“污染”你的PATH环境变量。

要么,从binary下载预编译包。在解压缩之后,将其下的bin目录添加到你的编译环境变量RUST_FLAGS内。比如,

set RUST_FLAGS=-L C:\libiconv-1.9.2-1-bin\bin

吐槽

同一款libiconv链接库怎么对LinuxWindows操作系统提供了不同名的导出函数呢?这个“缺德的”命名差异导致我在【编译期·动态链接】环节卡住了好几天。相对于Linux版的链接库导出函数名,Windows版的每个导出函数都有一个lib前缀 —— 故意的吧?真要命。

Dependencies

~50KB