On Thu, Nov 12, 2020 at 10:58 AM Taw via curl-library <curl-library@cool.haxx.se> wrote: > > Hi, > This is my first mail in a mailing-list so I hope I do this properly. > > I am trying to build cURL for Apple Silicon ARM (cross-compilation) using a > macOS Intel host. > How is done with other libraries (zlib, cjson, etc): just add "-target > arm64-apple-macos11" to CFLAGS and that's it. > > I am using this command > "CFLAGS=" -fPIC -DPIC -m64 -target arm64-apple-macos11 " ./configure > --without-libssh2 --without-zlib --without-gnutls --without-nss > --without-libidn --without-libidn2 --without-nghttp2 --without-librtmp > --without-brotli --without-libpsl > --prefix="/Users/test/work/curl-7.73.0/prefix" > --with-ssl="/Users/test/work/openssl-1.1.1h/prefix/" > > I get this error > "configure:4488: gcc -o conftest -fPIC -DPIC -m64 -target > arm64-apple-macos11 conftest.c >&5 > configure:4492: $? = 0 > configure:4499: ./conftest > ./configure: line 4501: ./conftest: Bad CPU type in executable > configure:4503: $? = 126 > configure:4510: error: in `/Users/test/work/curl-7.73.0': > configure:4512: error: cannot run C compiled programs. > If you meant to cross compile, use `--host'." > > But I don't know what "--host" to use. So I put a dummy "--host=arm" and it > seems to work. > On configure I get "Host setup: arm-unknown-none", but after "make > install" the binary seems ok. > "prefix/bin/curl: Mach-O 64-bit executable arm64" > > Am I doing this in a correct manner? Does it matter what I put to "host"?
When cross-compiling, you need to set both --host and --build. I don't know what the triplet should be. Maybe something like "arm64-apple". Also see https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Specifying-Target-Triplets.html. You should set CC, CXX, CPPFLAGS, CFLAGS, CXXFLAGS, AS, ASFLAGS and LD. CFLAGS and CXXFLAGS should include a --sysroot for the ARM target. If you use --isysroot, then set it in CPPFLAGS. You should also build all of the dependencies cURL needs. There are a lot of them, including Bzip2, Zlib, Unistring, GetText, IDN2, PCRE2, OpenSSL and OpenLDAP. And NgHttp2 can be a dependency if you have C++14 support. Also see https://github.com/noloader/Build-Scripts/blob/master/build-curl.sh. Autotools projects should use a --prefix of something like "$HOME/apple-arm64". Your --sysroot and --isysroot would then use "$HOME/apple-arm64", too. One of the easier things for you to do is, set up a Hello World project, and copy the settings from Xcode to your project. A Xcode build will give you most (not all) of the settings you will need. Jeff ------------------------------------------------------------------- Unsubscribe: https://cool.haxx.se/list/listinfo/curl-library Etiquette: https://curl.haxx.se/mail/etiquette.html