Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows MinGW Compiling #51

Open
Benjamin-Loison opened this issue Apr 7, 2020 · 6 comments
Open

Windows MinGW Compiling #51

Benjamin-Loison opened this issue Apr 7, 2020 · 6 comments

Comments

@Benjamin-Loison
Copy link

Hello, I have been trying to use opus libs for months now but I can't achieve it.

If someone could tell me how exactly compile executable decoder/encoder for Windows using MinGW, I would be very grateful.

Because the only real answer I found (if don't want to use Visual Studio) is: Use executables...

Thank you

@rillian
Copy link
Contributor

rillian commented Apr 7, 2020

Hmm. I used to build the release binaries this way. I thought I had a makefile to automate it, but I can't find it.

Do you mean cross-compiling for windows from a unix environment, or native windows mingw? IIRC the basis was something like

CC=i686-w64-mingw32-gcc-win32 make -f Makefile.unix

The tedious part is that you have to first do the same of all the dependencies: ogg, opus, opusfile, opusenc, and flac.

@rillian
Copy link
Contributor

rillian commented Apr 7, 2020

Ok, here is what I was thinking of. It should be straightforward to adapt this to opus-tools. NB the dependency versions are out of date now.

@Benjamin-Loison
Copy link
Author

Benjamin-Loison commented Apr 7, 2020

Thank you @rillian

Well native or cross-compile don't bother me (even if I prefer native). Yes I have quite understood that we need to compile all the dependencies... I am absolutely not keen on compiling not my projects...

I believe I am simply going to look at just using libraries but I have already given a few shots... Let say I want to compile this standalone Opus use file: https://pastebin.com/L5P2cyZS

I have libraries available here ? https://archive.mozilla.org/pub/opus/win32/opusfile-v0.9-win32.zip

If I do mingw32-g++ main.cpp -L "folderWhereIUnarchiveThePreviousFile" I always get:

undefined reference to `opus_get_version_string' and others... (I tried this several times in the past weeks...)

Ideas ? :/

EDIT: main.cpp is the code from the pastebin
I know that g++ don't get the good libraries but I don't know how to solve it...
Am I trying to link not the good libs ?

It seems that there isn't any available Window artifact here: #43

@mark4o
Copy link
Collaborator

mark4o commented May 17, 2020

The Windows artifacts are now working again and can be downloaded from Appveyor.

As for your link command, the libraries need to be listed at the end of the link command; add -lopusfile -logg -lopus to the end of the command to link with those libraries.

@Benjamin-Loison
Copy link
Author

Benjamin-Loison commented May 17, 2020

@mark4o

Indeed I am now able to build as it does on Appveyor, thanks a lot !

Nevertheless I am mainly interested in compiling my main.cpp with MinGW by adding the arguments -lopusfile -logg -lopus. But generated .lib files with msbuild aren't supported by MinGW which requires .a libraries. Where/how can I find them/build them please ?

EDIT: Otherwise I get a bunch of errors like these:

c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:\Users\Benjamin\Desktop\opus\inception\opusfile-v0.9-win32/opus.lib(Win32/Release/opus/celt_decoder.obj):(.text$mn+0xa): undefined reference to __security_cookie' c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: ./opus.lib(Win32/Release/opus/NLSF_encode.obj):(.text$mn+0x50): undefined reference to _alloca_probe_16'

Or how can I build as done with Appveyor but just with MinGW and no msbuild ?

@vtorri
Copy link

vtorri commented Oct 31, 2021

@Benjamin-Loison i've answered in #173

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants