c - 如何使用 Cygwin64 和 Clang 构建 32 位应用程序?
问题描述
我已经成功编译并链接了一些 C 代码与 Windows+Cygwin64+Eclipse+LLVM 工具链。
我想构建一个 32 位版本,所以我-m32
在编译器和链接器中添加了标志,但最终出现错误:
/usr/bin/ld: cannot find crtbegin.o: No such file or directory
/usr/bin/ld: cannot find -lgcc_s
/usr/bin/ld: cannot find -lgcc
/usr/bin/ld: skipping incompatible /usr/lib/libcygwin.a when searching for -lcygwin
/usr/bin/ld: skipping incompatible /usr/lib/libcygwin.a when searching for -lcygwin
/usr/bin/ld: skipping incompatible /usr/lib/libcygwin.a when searching for -lcygwin
/usr/bin/ld: cannot find -lcygwin
/usr/bin/ld: skipping incompatible /usr/lib/w32api/libadvapi32.a when searching for -ladvapi32
/usr/bin/ld: skipping incompatible /usr/lib/w32api/libadvapi32.a when searching for -ladvapi32
/usr/bin/ld: skipping incompatible /usr/lib/w32api/libadvapi32.a when searching for -ladvapi32
/usr/bin/ld: cannot find -ladvapi32
/usr/bin/ld: skipping incompatible /usr/lib/w32api/libshell32.a when searching for -lshell32
/usr/bin/ld: skipping incompatible /usr/lib/w32api/libshell32.a when searching for -lshell32
/usr/bin/ld: skipping incompatible /usr/lib/w32api/libshell32.a when searching for -lshell32
/usr/bin/ld: cannot find -lshell32
/usr/bin/ld: skipping incompatible /usr/lib/w32api/libuser32.a when searching for -luser32
/usr/bin/ld: skipping incompatible /usr/lib/w32api/libuser32.a when searching for -luser32
/usr/bin/ld: skipping incompatible /usr/lib/w32api/libuser32.a when searching for -luser32
/usr/bin/ld: cannot find -luser32
/usr/bin/ld: skipping incompatible /usr/lib/w32api/libkernel32.a when searching for -lkernel32
/usr/bin/ld: skipping incompatible /usr/lib/w32api/libkernel32.a when searching for -lkernel32
/usr/bin/ld: skipping incompatible /usr/lib/w32api/libkernel32.a when searching for -lkernel32
/usr/bin/ld: cannot find -lkernel32
/usr/bin/ld: cannot find crtend.o: No such file or directory
clang-8: error: linker command failed with exit code 1 (use -v to see invocation)
是否可以使用 64 位 Cygwin 构建 32 位应用程序?
解决方案
您必须安装 32 位版本的库。您必须安装软件包cygwin32-gcc-core
才能获取所有库+编译器。然后您必须为 32 位 as 调用 gcc i686-pc-cygwin-gcc
,因为gcc
通常是指向x86_64-pc-cygwin-gcc
.
推荐阅读
- git - 从 Dev 到 Master 的 Azure DevOps 拉取请求正在获取旧代码
- python - Pyinstaller 难以通过 Kivy 构建 FileChooserListView
- npm - 如何将所有常用组件作为存储库进行管理
- amazon-web-services - 我可以将 AWS Lambda 的调用分散在 5 分钟的时间间隔内吗?
- hex - 这个十六进制数据是否存在有意义的非十六进制数字确实存在的模式?
- apache-kafka - 根据有效负载将消息路由到不同的 Kafka 主题
- c - 如何以更快的速度打印像素阵列?
- html - 我的浏览器无法正确显示此字体
- django - 本地环境和 aws 之间的静态文件问题
- reactjs - 第 3 方 React 组件未更新