<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'><p style="font-family: Verdana, Arial, 'Bitstream Vera Sans', Helvetica, sans-serif; font-size: 13px; background-color: rgb(255, 255, 221);">Hi there, I have been trying to install ipopt on my mac for 2 weeks now:) and I think I've gotten pretty close. I followed this thread: <a class="ext-link" href="http://list.coin-or.org/pipermail/ipopt/2011-October/002609.html" style="text-decoration: none; color: rgb(187, 0, 0); border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: rgb(187, 187, 187);"><span class="icon" style="padding-left: 15px; background: url(https://projects.coin-or.org/Ipopt/chrome/common/extlink.gif) 0% 50% no-repeat;"></span>http://list.coin-or.org/pipermail/ipopt/2011-October/002609.html</a> But get stuck with this error: ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)</p><blockquote style="font-family: Verdana, Arial, 'Bitstream Vera Sans', Helvetica, sans-serif; font-size: 13px; background-color: rgb(255, 255, 221);">mex: link of ' "ipopt.mexmaci64"' failed.<BR></blockquote><p style="font-family: Verdana, Arial, 'Bitstream Vera Sans', Helvetica, sans-serif; font-size: 13px; background-color: rgb(255, 255, 221);">my mexopts.sh:</p><pre class="wiki" style="border: 1px solid rgb(215, 215, 215); box-shadow: rgb(238, 238, 238) 0px 0px 1em; border-radius: 0.3em; margin-right: 1.75em; margin-left: 1.75em; padding: 0.25em; overflow: auto; font-size: 13px; background: rgb(247, 247, 247);">#
# mexopts.sh        Shell script for configuring MEX-file creation script,
# mex. These options were tested with the specified compiler.
#
# usage: Do not call this file directly; it is sourced by the
# mex shell script. Modify only if you don't like the
# defaults after running mex. No spaces are allowed
# around the '=' in the variable assignment.
#
# Note: For the version of system compiler supported with this release,
# refer to the Supported and Compatible Compiler List at:
# http://www.mathworks.com/support/compilers/current_release/
#
#
# SELECTION_TAGs occur in template option files and are used by MATLAB
# tools, such as mex and mbuild, to determine the purpose of the contents
# of an option file. These tags are only interpreted when preceded by '#'
# and followed by ':'.
#
#SELECTION_TAG_MEX_OPT: Template Options file for building MEX-files
#
# Copyright 1984-2011 The MathWorks, Inc.
# $Revision: 1.78.4.18 $ $Date: 2012/11/15 06:22:54 $
#----------------------------------------------------------------------------
#
TMW_ROOT="$MATLAB"
MFLAGS=''
if [ "$ENTRYPOINT" = "mexLibrary" ]; then
MLIBS="-L$TMW_ROOT/bin/$Arch -lmx -lmex -lmat -lmwservices -lut"
else
MLIBS="-L$TMW_ROOT/bin/$Arch -lmx -lmex -lmat"
fi
case "$Arch" in
Undetermined)
#----------------------------------------------------------------------------
# Change this line if you need to specify the location of the MATLAB
# root directory. The script needs to know where to find utility
# routines so that it can determine the architecture; therefore, this
# assignment needs to be done while the architecture is still
# undetermined.
#----------------------------------------------------------------------------
MATLAB="$MATLAB"
;;
glnx86)
#----------------------------------------------------------------------------
echo "Error: Did not imbed 'options.sh' code"; exit 1 #imbed options.sh glnx86 12
#----------------------------------------------------------------------------
;;
glnxa64)
#----------------------------------------------------------------------------
RPATH="-Wl,-rpath-link,$TMW_ROOT/bin/$Arch"
# StorageVersion: 1.0
# CkeyName: GNU C
# CkeyManufacturer: GNU
# CkeyLanguage: C
# CkeyVersion:
# CkeyLinkerName: GNU ld
# CkeyLinkerVersion:
CC='gcc'
CFLAGS='-ansi -D_GNU_SOURCE'
CFLAGS="$CFLAGS -fexceptions"
CFLAGS="$CFLAGS -fPIC -fno-omit-frame-pointer -pthread"
CLIBS="$RPATH $MLIBS -lm"
COPTIMFLAGS='-O -DNDEBUG'
CDEBUGFLAGS='-g'
CLIBS="$CLIBS -lstdc++"
#
# C++keyName: GNU C++
# C++keyManufacturer: GNU
# C++keyLanguage: C++
# C++keyVersion:
# C++keyLinkerName: GNU ld
# C++keyLinkerVersion:
CXX='g++'
CXXFLAGS='-ansi -D_GNU_SOURCE'
CXXFLAGS="$CXXFLAGS -fPIC -fno-omit-frame-pointer -pthread"
CXXLIBS="$RPATH $MLIBS -lm"
CXXOPTIMFLAGS='-O -DNDEBUG'
CXXDEBUGFLAGS='-g'
#
# FortrankeyName: gfortran
# FortrankeyManufacturer: GNU
# FortrankeyLanguage: Fortran
# FortrankeyVersion:
# FortrankeyLinkerName: GNU ld
# FortrankeyLinkerVersion:
#
FC='gfortran'
FFLAGS='-fexceptions -fbackslash'
FFLAGS="$FFLAGS -fPIC -fno-omit-frame-pointer"
FLIBS="$RPATH $MLIBS -lm"
FOPTIMFLAGS='-O'
FDEBUGFLAGS='-g'
#
LD="$COMPILER"
LDEXTENSION='.mexa64'
LDFLAGS="-pthread -shared -Wl,--version-script,$TMW_ROOT/extern/lib/$Arch/$MAPFILE -Wl,--no-undefined"
LDOPTIMFLAGS='-O'
LDDEBUGFLAGS='-g'
#
POSTLINK_CMDS=':'
#----------------------------------------------------------------------------
;;
sol64)
#----------------------------------------------------------------------------
echo "Error: Did not imbed 'options.sh' code"; exit 1 #imbed options.sh sol64 12
#----------------------------------------------------------------------------
;;
mac)
#----------------------------------------------------------------------------
echo "Error: Did not imbed 'options.sh' code"; exit 1 #imbed options.sh mac 12
#----------------------------------------------------------------------------
;;
maci)
#----------------------------------------------------------------------------
echo "Error: Did not imbed 'options.sh' code"; exit 1 #imbed options.sh maci 12
#----------------------------------------------------------------------------
;;
maci64)
#----------------------------------------------------------------------------
# StorageVersion: 1.0
# CkeyName: Clang
# CkeyManufacturer: Apple
# CkeyLanguage: C
# CkeyVersion:
# CkeyLinkerName:
# CkeyLinkerVersion:
CC='xcrun -sdk macosx10.7 clang'
## workaround clang defect temporarily use line below SDKROOT='/Developer/SDKs/MacOSX10.6.sdk'
# compute SDK root on the fly
# target 10.7
MW_SDK_TEMP="find `xcode-select -print-path` -name MacOSX10.7.sdk"
MW_SDKROOT=`$MW_SDK_TEMP`
MACOSX_DEPLOYMENT_TARGET='10.7'
ARCHS='x86_64'
CFLAGS="-fno-common -mmacosx-version-min=$MACOSX_DEPLOYMENT_TARGET"
CFLAGS="$CFLAGS -fexceptions"
CLIBS="$MLIBS"
COPTIMFLAGS='-O2 -DNDEBUG'
CDEBUGFLAGS='-g'
#
CLIBS="$CLIBS -lstdc++"
# C++keyName: Clang++
# C++keyManufacturer: Apple
# C++keyLanguage: C++
# C++keyVersion:
# C++keyLinkerName:
# C++keyLinkerVersion:
CXX='xcrun -sdk macosx10.7 clang++'
CXXFLAGS="-fno-common -fexceptions -mmacosx-version-min=$MACOSX_DEPLOYMENT_TARGET"
CXXLIBS="$MLIBS -lstdc++"
CXXOPTIMFLAGS='-O2 -DNDEBUG'
CXXDEBUGFLAGS='-g'
#
# FortrankeyName: GNU Fortran
# FortrankeyManufacturer: GNU
# FortrankeyLanguage: Fortran
# FortrankeyVersion:
# FortrankeyLinkerName:
# FortrankeyLinkerVersion:
FC='gfortran'
FFLAGS='-fexceptions -m64 -fbackslash'
FC_LIBDIR=`$FC -print-file-name=libgfortran.a 2>&1 | sed -n '1s/\/*libgfortran\.a//p'`
FC_LIBDIR2=`$FC -print-file-name=libgfortranbegin.a 2>&1 | sed -n '1s/\/*libgfortranbegin\.a//p'`
FLIBS="$MLIBS -L$FC_LIBDIR -lgfortran -L$FC_LIBDIR2 -lgfortranbegin"
FOPTIMFLAGS='-O'
FDEBUGFLAGS='-g'
#
LD="$CC"
LDEXTENSION='.mexmaci64'
LDFLAGS=" -mmacosx-version-min=$MACOSX_DEPLOYMENT_TARGET"
LDFLAGS="$LDFLAGS -bundle -Wl,-exported_symbols_list,$TMW_ROOT/extern/lib/$Arch/$MAPFILE"
LDFLAGS="$LDFLAGS -framework vecLib"
LDOPTIMFLAGS='-O'
LDDEBUGFLAGS='-g'
#
POSTLINK_CMDS=':'
#----------------------------------------------------------------------------
;;
esac
#############################################################################
#
# Architecture independent lines:
#
# Set and uncomment any lines which will apply to all architectures.
#
#----------------------------------------------------------------------------
# CC="$CC"
# CFLAGS="$CFLAGS"
# COPTIMFLAGS="$COPTIMFLAGS"
# CDEBUGFLAGS="$CDEBUGFLAGS"
# CLIBS="$CLIBS"
#
# FC="$FC"
# FFLAGS="$FFLAGS"
# FOPTIMFLAGS="$FOPTIMFLAGS"
# FDEBUGFLAGS="$FDEBUGFLAGS"
# FLIBS="$FLIBS"
#
# LD="$LD"
# LDFLAGS="$LDFLAGS"
# LDOPTIMFLAGS="$LDOPTIMFLAGS"
# LDDEBUGFLAGS="$LDDEBUGFLAGS"
#----------------------------------------------------------------------------
#############################################################################
</pre><p style="font-family: Verdana, Arial, 'Bitstream Vera Sans', Helvetica, sans-serif; font-size: 13px; background-color: rgb(255, 255, 221);">and my makefile is:</p><pre class="wiki" style="border: 1px solid rgb(215, 215, 215); box-shadow: rgb(238, 238, 238) 0px 0px 1em; border-radius: 0.3em; margin-right: 1.75em; margin-left: 1.75em; padding: 0.25em; overflow: auto; font-size: 13px; background: rgb(247, 247, 247);"># Copyright (C) 2007, 2009 Peter Carbonetto. All Rights Reserved.
# This code is published under the Eclipse Public License.
#
# Author: Peter Carbonetto
# Dept. of Computer Science
# University of British Columbia
# May 19, 2007
# INSTRUCTIONS: Please modify the following few variables. See the
# Ipopt documentation (Ipopt/doc/documentation.pdf) for more details.
# This variable corresponds to the base directory of your MATLAB
# installation. This is the directory so that in its 'bin/'
# subdirectory you see all the matlab executables (such as 'matlab',
# 'mex', etc.)
MATLAB_HOME = /Applications/Matlab_R2013a_Student.app
# Set the suffix for matlab mex files. The contents of the
# $(MATLAB_HOME)/extern/examples/mex directory might be able to help
# you in your choice.
MEXSUFFIX = mexmaci64
# This is the command used to call the mex program. Usually, it is
# just "mex". But it also may be something like
# /user/local/R2006b/bin/mex if "mex" doesn't work.
MEX = $(MATLAB_HOME)/bin/mex
#MEX = "$(MATLAB_HOME)/sys/perl/win32/bin/perl" "`$(CYGPATH_W) "$(MATLAB_HOME)/bin/mex.pl"`"
#############################################################################
# Do not modify anything below unless you know what you're doing.
exec_prefix = ${prefix}
prefix = /Users/ashermetzger/CoinIpopt/build
libdir = ${exec_prefix}/lib
CXX = clang++
CXXFLAGS = -O3 -pipe -DNDEBUG -Wparentheses -Wreturn-type -Wcast-qual -Wall -Wpointer-arith -Wwrite-strings -Wconversion -Wno-unknown-pragmas -Wno-long-long -DIPOPT_BUILD -DMATLAB_MEXFILE # -DMWINDEXISINT
LDFLAGS = $(CXXFLAGS) #-static-libgcc -static-libstdc++
# Include directories (we use the CYGPATH_W variables to allow compilation with Windows compilers)
INCL = `PKG_CONFIG_PATH=/Users/ashermetzger/CoinIpopt/build/lib64/pkgconfig:/Users/ashermetzger/CoinIpopt/build/lib/pkgconfig:/Users/ashermetzger/CoinIpopt/build/share/pkgconfig: pkg-config --cflags ipopt`
#INCL = -I`$(CYGPATH_W) /Users/ashermetzger/CoinIpopt/build/include/coin`
# Linker flags
LIBS = `PKG_CONFIG_PATH=/Users/ashermetzger/CoinIpopt/build/lib64/pkgconfig:/Users/ashermetzger/CoinIpopt/build/lib/pkgconfig:/Users/ashermetzger/CoinIpopt/build/share/pkgconfig: pkg-config --libs ipopt | sed -e 's///g'`
##LIBS = -link -libpath:`$(CYGPATH_W) /Users/ashermetzger/CoinIpopt/build/lib` libipopt.lib -framework Accelerate -framework Accelerate -lm -ldl
#LIBS = -L/Users/ashermetzger/CoinIpopt/build/lib -lipopt `echo -framework Accelerate -framework Accelerate -lm -ldl | sed -e 's/-framework vecLib//g'`
LIBS_STATIC = $(LIBS)
#LIBS_STATIC = $$(echo " $(LIBS) " | sed -e "s| -lgfortran | `gfortran -print-file-name=libgfortran.a` |g" -e "s| -lquadmath | `gfortran -print-file-name=libquadmath.a` |g")
##LIBS_STATIC = $$(echo " $(LIBS) " | sed -e 's| -Wl,-Bdynamic,-lmwma57,-Bstatic | -lmwma57 |g')
# mex doesn't understand -Wl,-Bdynamic,-lmwma57,-Bstatic on Windows
# The following is necessary under cygwin, if native compilers are used
CYGPATH_W = echo
#MEXFLAGCXX =
MEXFLAGCXX = -cxx
MEXFLAGS = -v $(MEXFLAGCXX) -O CC="$(CXX)" CXX="$(CXX)" LD="$(CXX)" \
COPTIMFLAGS="$(CXXFLAGS)" CXXOPTIMFLAGS="$(CXXFLAGS)" \
LDOPTIMFLAGS="$(LDFLAGS)"
TARGET = ipopt.$(MEXSUFFIX)
OBJS = matlabexception.o \
matlabfunctionhandle.o \
matlabjournal.o \
iterate.o \
ipoptoptions.o \
options.o \
sparsematrix.o \
callbackfunctions.o \
matlabinfo.o \
matlabprogram.o \
ipopt.o
SRCDIR = ../../../../../Ipopt/contrib/MatlabInterface/src
VPATH = $(SRCDIR)
all: $(TARGET)
install: $(TARGET)
        if test -d $(libdir); then : ; else mkdir $(libdir); fi
        cp $(SRCDIR)/../ipopt.m $(SRCDIR)/../ipopt_auxdata.m $(TARGET) $(libdir)
uninstall:
        rm -f $(libdir)/ipopt.m $(libdir)/ipopt_auxdata.m $(libdir)/ipopt.$(MEXSUFFIX)
$(TARGET): $(OBJS)
        make mexopts
        $(MEX) $(MEXFLAGS) $(LIBS_STATIC) -output $@ $^
%.o: %.cpp
        ../../../../libtool --tag=CXX --mode=compile \
        $(CXX) $(CXXFLAGS) $(INCL) -I"$(MATLAB_HOME)/extern/include" \
-o $@ -c $^
clean:
        rm -f $(OBJS) *.lo $(TARGET)
distclean: clean
GM_ADD_LIBS_STATIC =
#GM_ADD_LIBS_STATIC = GM_ADD_LIBS="-static $$GM_ADD_LIBS";
# make mexopts applies a set of fixes to mexopts.sh on Mac,
# or mexopts.bat on Windows (if that file was generated
# by Gnumex to use gcc via Cygwin or MinGW)
mexopts:
        case `uname` in \
         Darwin*) \
         if ! test -e mexopts.sh; then \
         sed -e 's/-arch $$ARCHS//g' \
         $(MATLAB_HOME)/bin/mexopts.sh > mexopts.sh; \
         SDKROOT=`grep -m1 'SDKROOT=' mexopts.sh | sed -e 's/SDKROOT=//g'`; \
         if ! test -d $$SDKROOT; then \
         sed -e 's/-arch $$ARCHS//g' \
         -e 's/-isysroot $$SDKROOT//g' \
         -e 's/-Wl,-syslibroot,$$SDKROOT//g' \
         $(MATLAB_HOME)/bin/mexopts.sh > mexopts.sh; \
         fi; \
         fi \
         ;; \
         MINGW*) \
         if ! test -e mexopts.bat; then \
         echo Warning: no mexopts.bat found. You will probably need to run Gnumex to generate this file. Call \"make gnumex\" then try again.; \
         else \
         libdirwin=$$(cd $(libdir); cmd /c 'for %i in (.) do @echo %~fi' | sed 's|\\|/|g'); \
         mingwlibdirwin=$$(cd /mingw/lib; cmd /c 'for %i in (.) do @echo %~fi' | sed 's|\\|/|g'); \
         GM_ADD_LIBS=$$(echo "-llibmx -llibmex -llibmat $(LIBS) " | \
         sed -e "s| -L$(libdir) | -L$$libdirwin |g" \
         -e "s| -L/mingw/lib | -L$$mingwlibdirwin |g"); \
         $(GM_ADD_LIBS_STATIC) \
         cp mexopts.bat mexopts.bat.orig; \
         sed -e 's|COMPILER=gcc|COMPILER=clang++|' -e 's|GM_MEXLANG=c$$|GM_MEXLANG=cxx|' \
         -e "s|GM_ADD_LIBS=-llibmx -llibmex -llibmat$$|GM_ADD_LIBS=$$GM_ADD_LIBS|" \
         mexopts.bat.orig > mexopts.bat; \
         fi \
         ;; \
         CYGWIN*) \
         if ! test -e mexopts.bat; then \
         echo Warning: no mexopts.bat found. You will probably need to run Gnumex to generate this file. Call \"make gnumex\" then try again.; \
         else \
         libdirwin=`cygpath -m $(libdir)`; \
         cyglibdirwin=`cygpath -m /usr/lib`; \
         GM_ADD_LIBS=$$(echo "-llibmx -llibmex -llibmat $(LIBS) " | \
         sed -e "s| -L$(libdir) | -L$$libdirwin |g" \
         -e "s| -L/usr/lib/| -L$$cyglibdirwin/|g"); \
         $(GM_ADD_LIBS_STATIC) \
         cp mexopts.bat mexopts.bat.orig; \
         sed -e 's|COMPILER=gcc|COMPILER=clang++|' -e 's|GM_MEXLANG=c$$|GM_MEXLANG=cxx|' \
         -e "s|GM_ADD_LIBS=-llibmx -llibmex -llibmat$$|GM_ADD_LIBS=$$GM_ADD_LIBS|" \
         mexopts.bat.orig > mexopts.bat; \
         fi \
         ;; \
        esac
# make gnumex opens a Matlab session and calls the Gnumex tool to
# generate mexopts.bat set up for using gcc via Cygwin or MinGW
gnumex:
        if ! test -d "$(SRCDIR)/../gnumex"; then \
         echo "Warning: no gnumex folder found. Run \"cd `dirname $(SRCDIR)`; ./get.Gnumex\" first."; \
        else \
         GM_COMMANDS="oldpwd=pwd; cd $(SRCDIR)/../gnumex; gnumex('startup'); \
         gnumexopts=gnumex('defaults'); gnumexopts.precompath=[pwd '\libdef']; \
         gnumexopts.optfile=[oldpwd '\mexopts.bat'];"; \
         case `uname` in \
         MINGW*) \
         echo Use gnumex in Matlab to create mexopts.bat file, then close this new instance of Matlab.; \
         "$(MATLAB_HOME)/bin/matlab" -wait -r "$$GM_COMMANDS \
         gnumexopts.mingwpath=fileparts(gnumexopts.gfortpath); gnumex('struct2fig',gnumexopts)" \
         ;; \
         CYGWIN*) \
         echo Use gnumex in Matlab to create mexopts.bat file, then close this new instance of Matlab.; \
         "$(MATLAB_HOME)/bin/matlab" -wait -r "$$GM_COMMANDS gnumexopts.environ=3; gnumex('struct2fig',gnumexopts)" \
         ;; \
         esac \
        fi
</pre><p style="font-family: Verdana, Arial, 'Bitstream Vera Sans', Helvetica, sans-serif; font-size: 13px; background-color: rgb(255, 255, 221);">I will appreciate any help. Thanks in advance, Asher.</p>                                            </div></body>
</html>