Using libFlac with Xcode in Mountain Lion - objective-c

I've decided to write an simple audio converter in objective-c and cocoa, but i cannot link libFlac C library to my Xcode project. When i'm trying to do this, compiler says:
ld: symbol(s) not found for architecture x86_64
What's more, when i'm trying to compile it via command line tools (just like it is described in readme file), terminal throws:
ot match previous archive members cputype (16777223) (all members must
match) ranlib: for architecture: x86_64 file: .libs/libFLAC.a(float.o)
has no symbols make[4]: * [libFLAC.la] Error 1 make[3]:
[all-recursive] Error 1 make[2]: [all-recursive] Error 1 make[1]:
* [all-recursive] Error 1
And when I changed target architecture to intel 32-bit:
error: -fobjc-arc is not supported with fragile abi
Command >/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang >failed with exit code 1
Can anybody help me ? Maybe somebody knows about better, easier way for decoding FLAC files in objective-c ?

./configure --disable-asm-optimizations && make
This will build correctly on OS X.

Related

x265 - Undefined symbols for architecture arm64 (Apple Silicon)

any ideas for this?
I try to build SDRangel on my M1 Mac but at 77% I get this error ...
-- GIT_EXECUTABLE /opt/local/bin/git
-- GIT LIVE REPO VERSION RETRIEVED
-- X265 RELEASE VERSION 3.5+68-40e37bce9
-- Detected CXX compiler using -O3 optimization level
-- Configuring done
-- Generating done
-- Build files have been written to: /opt/build/sdrangel/build/external/x265/src/x265-build
[ 27%] Performing build step for 'x265'
Consolidate compiler generated dependencies of target common
[ 45%] Built target common
Consolidate compiler generated dependencies of target encoder
[ 65%] Built target encoder
[ 76%] Built target x265-static
[ 77%] Linking CXX shared library libx265.dylib
Undefined symbols for architecture arm64:
"x265_entropyStateBits", referenced from:
_x265_costCoeffNxN_neon in pixel-util.S.o
(maybe you meant: _x265_entropyStateBits)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[5]: *** [libx265.206.dylib] Error 1
make[4]: *** [CMakeFiles/x265-shared.dir/all] Error 2
make[3]: *** [all] Error 2
make[2]: *** [external/x265/src/x265-stamp/x265-build] Error 2
make[1]: *** [external/CMakeFiles/x265.dir/all] Error 2
make: *** [all] Error 2
I am stuck. Don't know what to try to solve this issue.
I did not find anything anywhere ...
Working on it for most of 2 days, I did find this site that presents a working method of building libx265 stuff on Apple Silicon and works for me on macOS 13.0.1. https://www.osxexperts.net/ Problem is, it only builds the libraries for building it into ffmpeg, no executable binary.
When I tried to get the executable also, by removing -DENABLE_CLI=OFF from the last cmake command, the error comes back. Put it back in, everything completes without error.
Here is the full process that works for me (no executable). It builds a multilibrary that can encode 8, 10, or 12-bit video:
cd x265/source
#### 12 bit
cmake -DCMAKE_INSTALL_PREFIX:PATH=${TARGET} -DHIGH_BIT_DEPTH=ON -DMAIN12=ON -DENABLE_SHARED=NO -DEXPORT_C_API=NO -DENABLE_CLI=OFF .
make
mv libx265.a libx265_main12.a
make clean-generated
rm CMakeCache.txt
#### 10bit
cmake -DCMAKE_INSTALL_PREFIX:PATH=${TARGET} -DHIGH_BIT_DEPTH=ON -DMAIN10=ON -DENABLE_SHARED=NO -DEXPORT_C_API=NO -DENABLE_CLI=OFF .
make clean
make
mv libx265.a libx265_main10.a
make clean-generated && rm CMakeCache.txt
#### 8 bit and all together
# removed -DENABLE_CLI=OFF from last one so we get the x265 binary
cmake -DCMAKE_INSTALL_PREFIX:PATH=${TARGET} -DEXTRA_LIB="x265_main10.a;x265_main12.a" -DEXTRA_LINK_FLAGS=-L. -DLINKED_10BIT=ON -DLINKED_12BIT=ON -DENABLE_SHARED=OFF -DENABLE_CLI=OFF .
make clean
make
mv libx265.a libx265_main.a
# this is Apple's libtool
libtool -static -o libx265.a libx265_main.a libx265_main10.a libx265_main12.a
make install
When I remove the last -DENABLE_CLI=OFF, here's the error:
[100%] Linking CXX executable x265
Undefined symbols for architecture arm64:
"x265_entropyStateBits", referenced from:
_x265_costCoeffNxN_neon in libx265.a(pixel-util.S.o)
_x265_10bit_costCoeffNxN_neon in libx265_main10.a(pixel-util.S.o)
_x265_12bit_costCoeffNxN_neon in libx265_main12.a(pixel-util.S.o)
(maybe you meant: _x265_entropyStateBits)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [x265] Error 1
make[1]: *** [CMakeFiles/cli.dir/all] Error 2
make: *** [all] Error 2
JimsMBPro:source jim$
EDIT: #Peter Betz, see the issue report. Until the developers correct this error, it will compile if you edit x265/source/common/aarch64/pixel-util.S, line 2410. Add an underscore as follows. Change:
movrel x1, x265_entropyStateBits
to
movrel x1, _x265_entropyStateBits

Titanium Hyperloop app does not compile due to too small libhyperloop.a lib file

I can't compile my titanium + hyperloop application. The compiler complains about the filesize of my libhyperloop.a, which is 2 bytes. Does this mean the file is corrupt, and does someone knows a workaround? I have inspected the file in both hyperloop 1.1.0 and 1.2.0 and both have the same file size.
ld: file too small (length=2) file '/Users/david/Projects/app/modules/iphone/hyperloop/1.1.0/libhyperloop.a' for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Can it be that my libhyperloop.a is corrupt? And does someone knows where to obtain a fully functional version of the hyperloop module?

CMake build failed with error 'SecTrustEvaluateAsync' undeclared when using gcc 5.3 on OS X

I am trying to build CMake 3.5.2 from source on Mac El Captain using GNU GCC 5.3 from HPC.
The ./bootstrap process is completed successfully but when i am using make is failing with the following error.
/Users/dev/Downloads/CMake-master/Utilities/cmcurl/lib/vtls/darwinssl.c: In function ‘darwinssl_connect_step3’:
/Users/dev/Downloads/CMake-master/Utilities/cmcurl/lib/vtls/darwinssl.c:1999:6: error: ‘SecTrustEvaluateAsync’ undeclared (first use in this function)
if(SecTrustEvaluateAsync != NULL) {
^
/Users/dev/Downloads/CMake-master/Utilities/cmcurl/lib/vtls/darwinssl.c:1999:6: note: each undeclared identifier is reported only once for each function it appears in
make[2]: *** [Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/vtls/darwinssl.c.o] Error 1
make[1]: *** [Utilities/cmcurl/lib/CMakeFiles/cmcurl.dir/all] Error 2
make: *** [all] Error 2
The same process worked fine when I was using the default clang compiler provided with Mac OS.
When I tried finding about SecTrustEvaluateAsync I found the following information in the apple site.
Any help on this is highly appreciated.
You might try the latest CMake 3.6-rc1. If the problem persists, file a bug to notice the CMake developers. We probably won't fix CMake's code.

VLC-2.2 SDK for Xcode 5 + iOS7 + 10.9 not compiled

FreeType build system -- automatic system detection
The following settings are used:
platform unix
compiler xcrun clang
configuration directory ./builds/unix
configuration rules ./builds/unix/unix.mk
If this does not correspond to your system or settings please remove the file
`config.mk' from this directory then read the INSTALL file for help.
Otherwise, simply type `/Applications/Xcode.app/Contents/Developer/usr/bin/make' again to build the library,
or `/Applications/Xcode.app/Contents/Developer/usr/bin/make refdoc' to build the API reference (the latter needs python).
cd builds/unix; /bin/sh ./configure '--without-png' '--prefix=/Users/itux/Developer/GIT/ios/ImportedSources/vlc/contrib/arm-apple-darwin11-armv7' '--build=i686-apple-darwin10' '--host=arm-apple-darwin11' '--target=arm-apple-darwin11' '--program-prefix=' '--enable-static' '--disable-shared' '--disable-dependency-tracking' '--with-pic'
configure: WARNING: unrecognized options: --disable-dependency-tracking
checking build system type... i686-apple-darwin10
checking host system type... arm-apple-darwin11
checking for arm-apple-darwin11-gcc... xcrun clang
checking whether the C compiler works... no
configure: error: in `/Users/itux/Developer/GIT/ios/ImportedSources/vlc/contrib/iPhoneOS-armv7/freetype/builds/unix':
configure: error: C compiler cannot create executables
See `config.log' for more details
make[1]: *** [setup] Error 77
make: *** [.freetype2] Error 2
I try build freetype2 as description here:
VLC Compiling Error

How to install gfortran under macports and use it with cmake?

hope someone can me help. I need to compile some code. I installed everything I needed with macports, in /opt/local/. And it's working how it should, except gFortran. I get this error:
ld: library not found for -lgfortran
collect2: ld returned 1 exit status
make[2]: *** [vigranumpy/private/graph/tws/svs.dylib] Error 1
make[1]: *** [vigranumpy/private/graph/tws/CMakeFiles/svs.dir/all] Error 2
make: *** [all] Error 2
I want everything to be installed in /opt/local/, because I don't want to touch the system (/usr/). gFortran isn't available for macports. You can install it with gcc46 as a variant. But if I use the gcc46 instead the default compilers, then the code before want compile.
How can I fix that?
Kind regards
See the CMake FAQ on how to use a different compiler:
http://www.cmake.org/Wiki/CMake_FAQ#How_do_I_use_a_different_compiler.3F
To use gfortran from macports as the fortran compiler, you should:
export FC=/opt/local/bin/gfortran
export CC=/opt/local/bin/gcc
export CXX=/opt/local/bin/g++
...prior to calling CMake. Then, after calling CMake with such environment variables set, it will cache the compiler paths in the CMakeCache.txt file, so for subsequent runs, you do not need the environment variables set anymore.
For mixed language (C, C++, Fortran) projects, it's important that the compilers all play nicely with each other.
This advice only works with the "Unix Makefiles" generator. I do not know of anybody who is using fortran via Xcode in conjunction with CMake.