概述如何使用mingw / autotools在Windows上启用largefile支持?
正如标题所说,我试图find一种方法来启用使用autotools的项目上的largefile支持。 我在configure.ac文件上使用AC_SYS_LARGEfilemacros,它在64位linux(默认)和32位linux上工作正常。 现在我移植了这个项目,以便它可以在windows(32位)上使用mingw进行编译,但是很遗憾, AC_SYS_LARGEfile不起作用(例如,off_t是4个字节,而在linux上是32和64位都是8,而fopen / fstat不是取而代之的是fopen64 / fstat64)。
这里是一个testing用例,我可以重现其中一个问题(off_t是4字节):
configure.ac
AC_INIT([testcase],[1.0.0],[admin@example.com]) AC_CONfig_MACRO_DIR([m4]) AM_INIT_AUTomake([-Wall -Werror foreign]) AC_PROG_CC AC_CONfig_headerS([config.h]) # Support for large files in 32bit systems AC_SYS_LARGEfile AC_CONfig_fileS([Makefile]) AC_OUTPUT
Makefile.am
尝试运行faac的引导脚本,但遇到错误
如何在configuration中打印Cmacros的值
对于windows的OpenSSL支持,不能交叉编译cURL
通过Makefile构build和构build脚本工作,但与等效的Makefile.am没有(给出未定义的引用错误)
在makefile中添加特定于平台的标志
ACLOCAL_AMFLAGS=-I m4 bin_PROGRAMS=testcase testcase_SOURCES=testcase.c testcase_CFLAGS= -std=gnu99 -O2
testcase.c
#include \”config.h\” #include <stdio.h> int main(int argc,char *argv[]) { printf(\”sizeof off_t: %i bytesn\”,sizeof(off_t)); return 0; }
编译/运行testing用例我使用以下内容:
mkdir m4 autoreconf –install ./configure make ./testcase
64位linux上的输出(使用gcc / autotools)
sizeof off_t: 8 bytes
32位linux上的输出(使用gcc / autotools)
sizeof off_t: 8 bytes
windows 7 32位输出(使用mingw-get来准备环境):
sizeof off_t: 4 bytes
任何想法,我可以在configuration脚本中添加/修改,所以我可以在两个平台上获得largefile支持? 这可能使用mingw / autotools?
学习如何使用GNU autotools打包我的程序时遇到麻烦
如何使用yocto食谱给“configuration”选项?
libtool只创build静态库 – 我需要共享对象
错误:使用libtool库,但\’liBTOol\’未定义
在不安装包的情况下预览手册页
切换到mingw-w64项目,尽管名称,有一个32位编译器有适当的大文件支持。 我不确定是否是原始mingw32项目的错误或限制,因为我无法在其他项目中找到此问题的来源。
使用host = i686-pc-mingw32配置输出
… checking for special C compiler options needed for large files… no checking for _file_OFFSET_BITS value needed for large files… unkNown checking for _LARGE_fileS value needed for large files… unkNown checking that generated files are newer than configure… done …
使用host = i686-w64-mingw32配置输出
… checking for special C compiler options needed for large files… no checking for _file_OFFSET_BITS value needed for large files… 64 checking that generated files are newer than configure… done …
第二个生成一个输出正确值的32位可执行文件。 简而言之,问题在于编译器,而不是在autotools中。
我仍然有兴趣回答为什么原始的mingw32有这个问题,如果这个问题是可以解决的。
总结
以上是内存溢出为你收集整理的如何使用mingw / autotools在Windows上启用largefile支持?全部内容,希望文章能够帮你解决如何使用mingw / autotools在Windows上启用largefile支持?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
请登录后查看评论内容