windows 7 x64用cmake,mingw32安装LLVM,编译时报错MemoryBuffer.cpp:381:25: error

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了windows 7 x64用cmake,mingw32安装LLVM,编译时报错MemoryBuffer.cpp:381:25: error相关的知识,希望对你有一定的参考价值。

D:\llvm_src\lib\Support\MemoryBuffer.cpp: In function 'llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer> > getOpenFileImpl(int, const llvm::Twine&, uint64_t, uint64_t, int64_t, bool, bool)':
D:\llvm_src\lib\Support\MemoryBuffer.cpp:381:25: error: 'SEEK_SET' was not declared in this scope
if (lseek(FD, Offset, SEEK_SET) == -1)
^
lib\Support\CMakeFiles\LLVMSupport.dir\build.make:1012: recipe for target 'lib/Support/CMakeFiles/LLVMSupport.dir/MemoryBuffer.cpp.obj' failed
mingw32-make[2]: *** [lib/Support/CMakeFiles/LLVMSupport.dir/MemoryBuffer.cpp.obj] Error 1
CMakeFiles\Makefile2:207: recipe for target 'lib/Support/CMakeFiles/LLVMSupport.dir/all' failed
mingw32-make[1]: *** [lib/Support/CMakeFiles/LLVMSupport.dir/all] Error 2
Makefile:148: recipe for target 'all' failed
mingw32-make: *** [all] Error 2
其它环境是:
cmake-3.7.0-rc1-win32-x86 // 用cmake-3.7.0-rc1-win64-x64 也不行
C:\Users\dong>mingw32-make -v
GNU Make 3.82.90
Built for i686-pc-mingw32
Python 3.5.2

Microsoft Visual Studio--common--MSDev98--Bin—MSDEV.EXE,通过此路径找到MSDEV.EXE可执行文件(或者右击桌面VC图标,选择打开文件位置)。
右键--属性--常规,将MSDEV.EXE更名为MSDEV1.EXE(其它名称也行,如MSDEV2.EXE).
右键--属性--兼容性,兼容模式选择Windows XP(service pack2)"或者WindowsXP(service pack3).权限等级勾选为“以管理员身份运行此程序”,点击确定。
重新运行VC6.0,应该可以完美运行(如果第一次报错,那么关闭,重新打开应该就可以了)。追问

我不是安装 VC6.0
是在安装LLVM

参考技术A 完全不懂的说……追问

http://blog.csdn.net/joyous/article/details/8197754
学习编译原理,老师让搭环境。。。。

mingw64+msys2下使用cmake问题

直接pacman -S cmake 安装的并不好用,直接下载windows版本的cmake. 比如安装在D:\\cmake下. 然后设置环境变量

export PATH=D:/cmake/bin:$PATH 

然后编辑一个 toolchain-mingw64.cmake文件:

SET(CMAKE_SYSTEM_NAME Windows)
SET(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc)
SET(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++)
SET(CMAKE_RC_COMPILER x86_64-w64-mingw32-windres)
SET(CMAKE_RANLIB x86_64-w64-mingw32-ranlib)

SET(CMAKE_ASM_YASM_COMPILER yasm)

保存后。

接下来: cmake -G"Unix Makefiles" . -DCMAKE_TOOLCHAIN_FILE=toolchain-mingw64.cmake 就可以生成makefile文件.

注意上面的 toolchain-mingw64.cmake内容 这些变量可能要根据实际情况设置。

还有个问题,mingw64生成的dll往往依赖libgccxxx.dll 和 libstdc++.dll, 如何不依赖,给 toolchain-mingw64.cmake加入下面的代码即可

SET(CMAKE_CXX_FLAGS "-static-libgcc -static-libstdc++ -static")
SET(CMAKE_C_FLAGS "-static-libgcc -static-libstdc++ -static")
SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "-static-libgcc -static-libstdc++ -static")

SET(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "-static-libgcc -static-libstdc++ -static")

到此为止应该能帮你解决掉部分问题。

以上是关于windows 7 x64用cmake,mingw32安装LLVM,编译时报错MemoryBuffer.cpp:381:25: error的主要内容,如果未能解决你的问题,请参考以下文章

MinGW x64 for Windows安装

mingw64+msys2下使用cmake问题

Windows下使用mingw+cmake编译C/C++程序

在 Windows 上使用 CMake 和 MinGW 链接 LLVM 库

如何使用 CMAKE 从命令行在 Windows 上构建 x86 和/或 x64?

[CMake + MinGW + Windows 10上的Clang