windows 下使用 msys2 使用gcc进行编译 libiconv

Posted 福州-司马懿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了windows 下使用 msys2 使用gcc进行编译 libiconv相关的知识,希望对你有一定的参考价值。

cygwin、MinGW64、MSYS 的区别

cygwin 没有一个好用的包管理工具,无论是官方的 setup.exe,还是第三方的 apt-cyg,像依赖什么的都得额外按照,而且不支持升级操作。另外 cygwin 里面很多软件还是比较老的。

MinGW64(Minimalist GNU for Windows)用于在 Windows 上编译基于GCC的应用程序。他主要提供了针对 win32 应用的 GCC、GNU binutils 等工具,以及对等于 Windows SDK(的子集)的头文件和用于 MinGW 版本的 linker 的库文件(so【动态链接库】、a【静态链接库】 等,而不是 VC 的lib)。MinGW 是用于进行 Windows 应用开发的 GNU 工具链(开发环境),它的编译产物一般是原生 Windows 应用。(mingw 的命令行工具的命令都是基于 windows 的!!!)

MSYS 是用于辅助 Windows 版 MinGW 进行命令行开发的配套软件包,提供了部分 Unix 工具以使得 MinGW 的工具使用起来方便一些(MinGW需要在MSYS内部通过 pacman 安装)

下载 msys2

http://www.msys2.org/

msys2使用pacman作为包管理器。同时,pacman也是ArchLinux上的包管理器。
所以我们使用 pacman 命令安装编译工具链
-S 表示保存,-Q 表示查询

pacman -S gcc  
pacman -S mingw-w64-x86_64-toolchain
pacman -S mingw-w64-i686-toolchain
pacman -S base-devel
pacman -S vim
pacman -S yasm
pacman -S nasm

下载 libiconv

http://www.gnu.org/software/libiconv/

编译 libiconv

./configure --prefix=/usr/local
make
make install

也可以连写
./configure && make && make install

编译结果会放在 configure 指定的路径。如果默认不写–prefix路径的话,会自动安装到/usr/local下面。

默认会在 /usr/local/bin 下生成 libiconv.exe 并在 /usr/local/lib 目录下生成 .a 的静态链接库。

通过 ls -l 命令可以查看文件的具体信息。

通过 ./configure -h 可以查看配置的帮助文档

这里编译 libiconv 只是做一个编译的试验,msys2 已经自带了 libiconv, 通过 whereis 命令可以查看到该位置

从时间上可以看出 libiconv 老早就被加到 msys2 里面了

将编译好的成果拷贝出来

使用默认挂载的目录

输入 mount 可以查看当前已挂在的目录
第一个是windows 下的目录,被映射到第二个参数上面了。

使用自定义挂载的目录

  1. vim /etc/fstab,按 i 键进入编辑模式
  2. C:/Users/Public/Documents /windoc ntfs binary,noacl,auto 1 1
  3. ESC 退出编辑模式,然后 :wq 保存文件

这里是将 windows 目录下的 C:\\Users\\Public\\Documents 目录映射到 msys2 的 /windoc目录下
fstab是用来添加启动时自动挂载的目录的,所以必须要重启才会生效。可以输入 exit 退出程序,然后重新打开

补充说明

后面发现 mys2 已经实现了挂载操作了。

  • ls /d 可以直接查看 D盘 下面的文件
  • cd /d 可以直接进入 D盘

以上是关于windows 下使用 msys2 使用gcc进行编译 libiconv的主要内容,如果未能解决你的问题,请参考以下文章

MSYS2 - 安装 gcc 或工具链?

使用 MSYS2/MINGW-64 缺少 POSIX 和 std 符号

如何在 MSYS2 中使用 Windows Python 安装

如何将使用sysioctl.h的代码移植到MinGW gcc中?

如何使用 MSYS2 获取旧版本的软件包?

msys2下go的编译问题