>  기사  >  운영 및 유지보수  >  mingw를 리눅스에서 실행할 수 있나요?

mingw를 리눅스에서 실행할 수 있나요?

青灯夜游
青灯夜游원래의
2023-03-15 12:10:162096검색

mingw는 Linux에서 실행될 수 있습니다. MinGW는 GNU 도구 세트를 사용하여 무료로 사용 가능하고 자유롭게 재배포 가능한 Windows 관련 헤더 파일 및 가져오기 라이브러리 모음입니다. 이를 통해 사용자는 타사 C 런타임 없이도 GNU/Linux 플랫폼에서 기본 Windows 프로그램을 생성할 수 있습니다. ) 도서관.

mingw를 리눅스에서 실행할 수 있나요?

이 튜토리얼의 운영 환경: linux7.3 시스템, mingw-w64, Dell G3 컴퓨터.

mingw란?

MinGW는 Minimalist GNU for Windows의 약자입니다. GNU 도구 세트를 사용하여 무료로 사용 가능하고 재배포 가능한 Windows 관련 헤더 파일 및 가져오기 라이브러리 모음으로, 타사 C 런타임 없이도 GNU/Linux 및 Windows 플랫폼에서 기본 Windows 프로그램을 생성할 수 있습니다(C 런타임 ) 도서관.

MinGW는 콘솔 모드 프로그램이 Microsoft의 표준 C 런타임(MSVCRT.DLL)을 사용할 수 있도록 하는 포함 파일 및 포트 라이브러리 세트입니다. Windows 95 이상의 Windows OS 릴리스에서는 기본 런타임을 사용하고 GCC를 사용하여 콘솔 모드 ANSI(American Standards Institute) 호환 프로그램을 작성할 수 있으며 Microsoft에서 제공하는 C 런타임 확장을 기본 런타임과 결합하여 사용할 수 있습니다. CRT(C 런타임) 및 Windows API 기능을 모두 사용할 수 있는 모든 권한을 갖습니다.

mingw를 Linux에서 실행할 수 있나요?

mingw를 Linux에서 실행할 수 있나요? Debian 시리즈를 예로 들면 다음과 같은 방법으로 MinGW 설치 패키지를 조회하여 필요에 따라 설치할 수 있습니다.

1. mingw

mingw를 리눅스에서 실행할 수 있나요?

2. mingw

mingw를 리눅스에서 실행할 수 있나요?

3. mingw 빌드 패키지를 쿼리합니다. 4. 자신의 하드웨어에 적합한 패키지를 선택합니다.

mingw를 리눅스에서 실행할 수 있나요?

Linuxmingw를 리눅스에서 실행할 수 있나요?

libcurl은 크로스 플랫폼이며 사용하기 쉽고 강력한 네트워크 라이브러리입니다. 컴파일된 바이너리 패키지는 대부분의 Linux 배포판에서 사용할 수 있으며 Mac 시스템에서는 이를 핵심 구성 요소로 사용합니다. 그러나 Windows 플랫폼에서는 수동 컴파일이 필요하며, 나처럼 특별한 결벽증이 있는 일부 사람들은 추가 DLL을 정말 싫어하고 이를 정적으로 링크해야 한다는 점은 말할 것도 없습니다. 이 기사는 MinGW를 사용하여 Linux에서 Windows용 libcurl 정적 라이브러리를 컴파일하는 방법을 설명하는 이틀 밤의 던지기 경험에 대한 간단한 요약입니다. STEP1 MinGW 컴파일러 설치

이 단계에 대해서는 자세히 설명하지 않겠습니다. 대부분의 Linux 배포판은 ArchLinux를 예로 들면 다음과 같이 실행하면 됩니다. 크로스 컴파일이 필요 없고 Windows에서 직접 컴파일하고 싶다면 SourceForge에 가서 Windows 버전을 다운로드하세요. w64가 64비트 버전인지 걱정하지 마세요. 32비트와 64비트 프로그램을 모두 컴파일할 수 있습니다. 내 버전을 예로 들어보겠습니다.

~# pacman -S mingw-w64
두 개의 gcc가 있음을 알 수 있습니다. i686-w64-mingw32-gcc로 컴파일된 프로그램은 32비트이고 x86_64-w64입니다. -mingw32-gcc는 64비트 버전으로 컴파일됩니다. 이제 Hello World(내 Hello World 코드를 사용할 수 있음 ^_^)를 작성한 다음 컴파일해 보세요.
~# pacman -Ql mingw-w64-gcc| grep '/usr/bin/.*gcc$'
mingw-w64-gcc /usr/bin/i686-w64-mingw32-gcc
mingw-w64-gcc /usr/bin/x86_64-w64-mingw32-gcc

가상 머신으로 가져가거나 Wine에 넣으세요. 정상적으로 실행될 수 있다면 축하합니다. 첫 번째 단계가 완료되었습니다.

STEP2 소스코드 다운로드 w64是不是64位版本,它既可以编译32位又可以编译64位程序。还是以我的版本为例:

i686-w64-mingw32-gcc hello_world.c -o hello_world.exe

可以看到有两个gcc,用i686-w64-mingw32-gcc编译出来的程序就是32位的,而x86_64-w64-mingw32-gcc编译出来的就是64位的。现在,随便写个Hello World(你可以用我的Hello World代码 ^_^),然后编译试试:

$ ./Configure no-shared --cross-compile-prefix=i686-w64-mingw32- mingw
$ make

把它拿到虚拟机或扔进Wine里,如果能正常运行,那么恭喜你,第一步完成了。

STEP2 下载源码

很简单的步骤,如果自己搞不定的建议直接右上角。

  • LibCurl:最上面的Source Archives
  • zLib:请下Source Code
  • OpenSSL:可选,如果没有必要就不要编译,会极大地增加文件体积

curl-7.35.0zlib-1.2.8(可能还有openssl-1.0.1f)这几个文件夹放在同一个目录下,然后进行下一步。

STEP3 编译源码

先打开zlib/win32文件夹下的Makefile.gcc文件,把PREFIX =这行改成STEP1里的gcc前缀,对于我来说就是PREFIX = i686-w64-mingw32-。把这个文件拷贝到zlib文件夹下,然后在zlib文件夹下make -f Makefile.gcc,你就应该能看到libz.a这个文件了。

如果你要编译OpenSSL,那么就去openssl文件夹下

make -f Makefile.m32 CFG=-zlib

即可,记得改prefix。生成libssl.alibcrypto.a

🎜아주 간단한 단계, 모르시면 그냥 상위로 가세요 오른쪽 코너. 🎜
  • LibCurl: 상위 소스 아카이브
  • zLib: 소스 코드를 다운로드하세요.
  • OpenSSL: 선택 사항, 필요하지 않으면 컴파일하지 마십시오. 크게 증가할 것입니다. 파일 크기
🎜curl-7.35.0zlib-1.2.8(및 openssl-1.0.1f도 가능)를 비교하세요. code>) 이러한 폴더를 동일한 디렉터리에 배치한 후 다음 단계로 진행합니다. 🎜🎜🎜STEP3 소스 코드 컴파일🎜🎜🎜먼저 zlib/win32 폴더에 있는 Makefile.gcc 파일을 열고 PREFIX =줄을 변경하세요. > STEP1에서는 gcc 접두사가 됩니다. 저는 PREFIX = i686-w64-mingw32-입니다. 이 파일을 zlib 폴더에 복사한 다음 zlib 폴더 아래에 make -f Makefile.gcc를 복사하면 를 볼 수 있습니다. >libz.a이 파일입니다. 🎜🎜OpenSSL을 컴파일하려면 openssl 폴더 🎜
make -f Makefile.m32 CFG=-zlib-ssl
🎜로 이동하여 접두사를 변경하는 것을 잊지 마세요. libssl.alibcrypto.a 생성🎜

最后去libcurl里的lib文件夹里修改Makefile.m32文件,在CC = $(CROSSPREFIX)gcc上加一行CROSSPREFIX=i686-w64-mingw32-(请按需修改),然后把下面CFLAGS那行改成这样CFLAGS = -g -O2 -Wall -DCURL_DISABLE_LDAP,最后

make -f Makefile.m32 CFG=-zlib

或是

make -f Makefile.m32 CFG=-zlib-ssl

make到最后时会报个错,是因为文件没放对地方,手动挪一下即可

for x in vtls/openssl.o vtls/gtls.o vtls/vtls.o vtls/nss.o vtls/qssl.o vtls/polarssl.o vtls/polarssl_threadlock.o vtls/axtls.o vtls/cyassl.o vtls/curl_schannel.o vtls/curl_darwinssl.o vtls/gskit.o
do
mv `basename $x` vtls
done

然后再make一下,libcurl.a文件应该就出现了。
如果生成dll出错也不要紧,我们要的是.a文件

STEP4 测试

现在,你可以找一段libcurl的demo来测试了。注意要加上宏定义CURL_STATICLIB

i686-w64-mingw32-gcc -I. -L. -DCURL_STATICLIB curl_demo.c -lcurl -lz -lws2_32 -o curl_demo.exe

如果你因为不知道gcc-I-L选项的用法而编译不过,请自行Google。如果你加了ssl支持,你需要链接更多的库,具体请根据错误信息自行Google。

最后提醒一点:请把-lcurl选项放在源文件后面,我当初就是因为这个死活链接不过。最后把curl_demo.exe拖进虚拟机里,如果一切正常,那么恭喜你,你成功了。

相关推荐:《Linux视频教程

위 내용은 mingw를 리눅스에서 실행할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.