strukturag / libde265

Open h.265 video codec implementation.
Other
1.7k stars 457 forks source link

error: 'system' is unavailable: not available on iOS #403

Open CaiJingLong opened 1 year ago

CaiJingLong commented 1 year ago

I want to compile for iOS.

I run with next script to create MakeFile and make -j4

As far as I know, the system function was removed from the iOS SDK 11 (5 years ago), so libde265 has no hope of being compatible with the iOS platform?

log

```log rd-curves.cc:377:16: error: 'system' is unavailable: not available on iOS int retval = system(replace_variables(sstr.str()).c_str()); ^ /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.2.sdk/usr/include/stdlib.h:190:6: note: 'system' has been explicitly marked unavailable here int system(const char *) __DARWIN_ALIAS_C(system); ^ rd-curves.cc:399ld: warning: ignoring file ../libde265/.libs/libde265.a, building for iOS-arm64 but attempting to link with file built for iOS-arm64 :16: error: 'system' is unavailable: not available on iOS int retval = system(replace_variables(sstr.str()).c_str()); ^ /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.2.sdk/usr/include/stdlib.h:190:6: note: 'system' has been explicitly marked unavailable here int system(const char *) __DARWIN_ALIAS_C(system); ^ rd-curves.cc:557:16: error: 'system' is unavailable: not available on iOS int retval = system(cmd2.c_str()); ^ /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.2.sdk/usr/include/stdlib.h:190:6: note: 'system' has been explicitly marked unavailable here int system(const char *) __DARWIN_ALIAS_C(system); ^ rd-curves.cc:634:16: error: 'system' is unavailable: not available on iOS int retval = system(cmd2.c_str()); ```

iconfigure

```sh #!/bin/sh set -e usage () { echo "Usage: [VARIABLE...] $(basename $0) architecture" echo "" echo " architecture Target architecture. [armv7|armv7s|arm64|i386|x86_64]" echo "" echo " VARIABLEs are:" echo " SDKVERSION Target a specific SDK version." echo " PREFIX Custom install prefix, useful for local installs." echo " CHOST Configure host, set if not deducable by ARCH." echo " SDK SDK target, set if not deducable by ARCH. [iphoneos|iphonesimulator]" echo "" echo " CFLAGS CPPFLAGS CXXFLAGS LDFLAGS PKG_CONFIG_PATH" echo "" echo " All additional parameters are passed to the configure script." exit 1 } ScriptDir="$( cd "$( dirname "$0" )" && pwd )" # Sanity checks if [ "$#" -lt 1 ]; then echo "Please supply an architecture name." usage fi if [ ! -x "./configure" ] ; then echo "No configure script found." usage fi # Build architecture export ARCH=$1 # Export supplied CHOST or deduce by ARCH if [ ! -z "$CHOST" ]; then export CHOST else case $ARCH in armv7 | armv7s ) export CHOST=arm-apple-darwin* ;; arm64 ) export CHOST=aarch64-apple-darwin* ;; i386 | x86_64 ) export CHOST=$ARCH-apple-darwin* ;; * ) usage ;; esac fi # Export supplied SDK or deduce by ARCH if [ ! -z "$SDK" ]; then export SDK else case $ARCH in armv7 | armv7s | arm64 ) export SDK=iphoneos ;; i386 | x86_64 ) export SDK=iphonesimulator ;; * ) usage ;; esac fi # Export supplied SDKVERSION or use system default if [ ! -z "$SDKVERSION" ]; then SDKNAME=$(basename $(xcrun --sdk $SDK --show-sdk-platform-path) .platform) export SDKVERSION export SDKROOT=$(xcrun --sdk $SDK --show-sdk-platform-path)"/Developer/SDKs/$SDKNAME.$SDKVERSION.sdk" else export SDKVERSION=$(xcrun --sdk $SDK --show-sdk-version) # current version export SDKROOT=$(xcrun --sdk $SDK --show-sdk-path) # current version fi # Export supplied PREFIX or use default if [ ! -z "$PREFIX" ]; then export PREFIX else export PREFIX="$ScriptDir/$SDK-$SDKVERSION/$ARCH" fi # Binaries export CC=$(xcrun --sdk $SDK --find clang) export CPP=$(xcrun --sdk $SDK --find clang)" -E" export CXX=$(xcrun --sdk $SDK --find clang++) export LD=$(xcrun --sdk $SDK --find ld) # Flags export CFLAGS="$CFLAGS -arch $ARCH -isysroot $SDKROOT -I$PREFIX/include -miphoneos-version-min=$SDKVERSION" export CPPFLAGS="$CPPFLAGS -arch $ARCH -isysroot $SDKROOT -I$PREFIX/include -miphoneos-version-min=$SDKVERSION" export CXXFLAGS="$CXXFLAGS -arch $ARCH -isysroot $SDKROOT -I$PREFIX/include" export LDFLAGS="$LDFLAGS -arch $ARCH -isysroot $SDKROOT -L$PREFIX/lib" export PKG_CONFIG_PATH="$PKG_CONFIG_PATH":"$SDKROOT/usr/lib/pkgconfig":"$PREFIX/lib/pkgconfig" # Remove script parameters shift 1 # Run configure ./configure \ --prefix="$PREFIX" \ --host="$CHOST" \ --enable-static \ --disable-shared \ $@ ```

My command:

./iconfigure arm64  --disable-dec265  --disable-sherlock265
make -j4