如何使用mingwautotools在Windows上启用largefile支持?【JAVA教程】

!
也想出现在这里? 联系我们
信息

如何使用mingwautotools在Windows上启用largefile支持?,第1张

概述如何使用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支持?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

© 版权声明
THE END
喜欢就支持一下吧
点赞127 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容