pytorch/audio

Can't compile on Windows (MinGW)

HugoGranstrom opened this issue · 3 comments

I tried installing torchaudio with the command python setup.py install using the MinGW64 gcc compiler and got this error:

running install
running bdist_egg
running egg_info
writing torchaudio.egg-info\PKG-INFO
writing dependency_links to torchaudio.egg-info\dependency_links.txt
writing requirements to torchaudio.egg-info\requires.txt
writing top-level names to torchaudio.egg-info\top_level.txt
reading manifest file 'torchaudio.egg-info\SOURCES.txt'
writing manifest file 'torchaudio.egg-info\SOURCES.txt'
installing library code to build\bdist.win-amd64\egg
running install_lib
running build_py
copying torchaudio\_ext\th_sox\__init__.py -> build\lib.win-amd64-3.6\torchaudio\_ext\th_sox
running build_ext
generating cffi module 'build\\temp.win-amd64-3.6\\Release\\torchaudio._ext.th_sox._th_sox.c'
already up-to-date
building 'torchaudio._ext.th_sox._th_sox' extension
C:\Program Files\mingw-w64\x86_64-7.3.0-win32-seh-rt_v5-rev0\mingw64\bin\gcc.exe -mdll -O -Wall -DMS_WIN64 -IC:\Users\n15hugr\AppData\Local\Continuum\miniconda3\lib\site-packages\torch\utils\ffi\..\..\lib\include -IC:\Users\n15hugr\AppData\Local\Continuum\miniconda3\lib\site-packages\torch\utils\ffi\..\..\lib\include\TH -Itorchaudio/src -IC:\Users\n15hugr\AppData\Local\Continuum\miniconda3\include -IC:\Users\n15hugr\AppData\Local\Continuum\miniconda3\include -c build\temp.win-amd64-3.6\Release\torchaudio._ext.th_sox._th_sox.c -o build\temp.win-amd64-3.6\Release\build\temp.win-amd64-3.6\release\torchaudio._ext.th_sox._th_sox.o
C:\Program Files\mingw-w64\x86_64-7.3.0-win32-seh-rt_v5-rev0\mingw64\bin\gcc.exe -mdll -O -Wall -DMS_WIN64 -IC:\Users\n15hugr\AppData\Local\Continuum\miniconda3\lib\site-packages\torch\utils\ffi\..\..\lib\include -IC:\Users\n15hugr\AppData\Local\Continuum\miniconda3\lib\site-packages\torch\utils\ffi\..\..\lib\include\TH -Itorchaudio/src -IC:\Users\n15hugr\AppData\Local\Continuum\miniconda3\include -IC:\Users\n15hugr\AppData\Local\Continuum\miniconda3\include -c C:\Users\n15hugr\Documents\code\audio-master\torchaudio/src/th_sox.c -o c:\users\n15hugr\documents\code\audio-master\torchaudio\src\th_sox.o
writing build\temp.win-amd64-3.6\Release\build\temp.win-amd64-3.6\release\_th_sox.cp36-win_amd64.def
C:\Program Files\mingw-w64\x86_64-7.3.0-win32-seh-rt_v5-rev0\mingw64\bin\gcc.exe -shared -s build\temp.win-amd64-3.6\Release\build\temp.win-amd64-3.6\release\torchaudio._ext.th_sox._th_sox.o c:\users\n15hugr\documents\code\audio-master\torchaudio\src\th_sox.o build\temp.win-amd64-3.6\Release\build\temp.win-amd64-3.6\release\_th_sox.cp36-win_amd64.def -LC:\Users\n15hugr\AppData\Local\Continuum\miniconda3\lib\site-packages\torch\utils\ffi\..\..\lib -LC:\Users\n15hugr\AppData\Local\Continuum\miniconda3\libs -LC:\Users\n15hugr\AppData\Local\Continuum\miniconda3\PCbuild\amd64 -lsox -lpython36 -lmsvcr140 -o build\lib.win-amd64-3.6\torchaudio\_ext\th_sox\_th_sox.cp36-win_amd64.pyd
c:\users\n15hugr\documents\code\audio-master\torchaudio\src\th_sox.o:th_sox.c:(.text+0x0): multiple definition of `log1p'
build\temp.win-amd64-3.6\Release\build\temp.win-amd64-3.6\release\torchaudio._ext.th_sox._th_sox.o:torchaudio._ext.th_sox._th_sox.c:(.text+0x2e83): first defined here
c:\users\n15hugr\documents\code\audio-master\torchaudio\src\th_sox.o:th_sox.c:(.text+0xf): multiple definition of `log2'
build\temp.win-amd64-3.6\Release\build\temp.win-amd64-3.6\release\torchaudio._ext.th_sox._th_sox.o:torchaudio._ext.th_sox._th_sox.c:(.text+0x2e92): first defined here
c:\users\n15hugr\documents\code\audio-master\torchaudio\src\th_sox.o:th_sox.c:(.text+0x1e): multiple definition of `expm1'
build\temp.win-amd64-3.6\Release\build\temp.win-amd64-3.6\release\torchaudio._ext.th_sox._th_sox.o:torchaudio._ext.th_sox._th_sox.c:(.text+0x2ea1): first defined here
C:/Program Files/mingw-w64/x86_64-7.3.0-win32-seh-rt_v5-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lsox
C:/Program Files/mingw-w64/x86_64-7.3.0-win32-seh-rt_v5-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lmsvcr140
collect2.exe: error: ld returned 1 exit status
error: command 'C:\\Program Files\\mingw-w64\\x86_64-7.3.0-win32-seh-rt_v5-rev0\\mingw64\\bin\\gcc.exe' failed with exit status 1

I am facing a similar issue. The compilation goes fine until the building 'torch._C' extension phase where gcc succeed with 10 files, generating the respective .o file. Then I just get a gcc failed with exit status 1.
What I could see is that in this last compiler command line the string has double backslash. For instance,
in the correct compiled lines I can see
C:\tools\myfiles...\gcc.exe
then in the compiled error line I can see
C:\tools\myfiles\...\gcc.exe
In this case I suppose that the doubled backslash is causing the error in gcc.exe but I could not find where the command line is parsed.
But there is another point. If I am using Windows 10 and I configured my cmake to use Visual Studio 2017 and respective msbuild.exe, why the script is calling gcc to generate .o that is compatible for Linux but not for Windows? I think the script should use Microsoft cl.exe compiler.
Any hint?

Hi, Any update on this issue? We are need pytorch version 1.1.0 compiled using MinGW. We are facing same issue where compilation fails with following error for 'torch._C' extension

Same error encountered with MinGW64 also.

Copying extension caffe2.python.caffe2_pybind11_state
Copying caffe2.python.caffe2_pybind11_state from torch\Lib\site-packages\caffe2\python\caffe2_pybind11_state.cp36-win_amd64.pyd to E:\GitHub\pytorch\build\lib.win-amd64-3.6\caffe2\python\caffe2_pybind11_state.cp36-win_amd64.pyd
copying torch\Lib\site-packages\caffe2\python\caffe2_pybind11_state.cp36-win_amd64.pyd -> E:\GitHub\pytorch\build\lib.win-amd64-3.6\caffe2\python
building 'torch._C' extension
creating build\temp.win-amd64-3.6
creating build\temp.win-amd64-3.6\Release
creating build\temp.win-amd64-3.6\Release\torch
creating build\temp.win-amd64-3.6\Release\torch\csrc
C:\MinGW\bin\gcc.exe -mdll -O -Wall "-IC:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\include" -c torch/csrc/stub.cpp -o build\temp.win-amd64-3.6\Release\torch\csrc\stub.o /MD /Z7 /EHa /DNOMINMAX /wd4267 /wd4251 /wd4522 /wd4522 /wd4838 /wd4305 /wd4244 /wd4190 /wd4101 /wd4996 /wd4275
gcc: error: /MD: No such file or directory
gcc: error: /Z7: No such file or directory
gcc: error: /EHa: No such file or directory
gcc: error: /DNOMINMAX: No such file or directory
gcc: error: /wd4267: No such file or directory
gcc: error: /wd4251: No such file or directory
gcc: error: /wd4522: No such file or directory
gcc: error: /wd4522: No such file or directory
gcc: error: /wd4838: No such file or directory
gcc: error: /wd4305: No such file or directory
gcc: error: /wd4244: No such file or directory
gcc: error: /wd4190: No such file or directory
gcc: error: /wd4101: No such file or directory
gcc: error: /wd4996: No such file or directory
gcc: error: /wd4275: No such file or directory
error: command 'C:\\MinGW\\bin\\gcc.exe' failed with exit status 1

Closing as the build process has been changed to CMake, we have better Windows support and the issue reported here is obsolete.
If anyone encounters build error, please file a new issue.