Installing LibLinear on MATLAB R2014a - matlab

I'm trying to install LibLinear for MATLABR2014a on linux. When compiling in MATLAB the read.mexa64 and write.mexa64 are created just fine, it's on the train.mexa64 that it fails. The error I used to get was:
/home/admin/Documents/Project/Software/liblinear-1.94/linear.cpp:2739:19:
warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...)’,
declared with attribute warn_unused_result [-Wunused-result] fscanf(fp,"\n"); ^
If make.m fails, please check README about detailed instructions.
So I sorted out the handling of the return value in linear.cpp and it still fails, providing only the last line directing me to the README. I've also tried installing gcc-4.7, g++-4.7 and cpp-4.7 but the make process still terminates without any information. As it suggests I have the matlab directory set to:
MATLABDIR = /usr/local/matlab
and I have included
-U_FORTIFY_SOURCE
in the CFLAGS just in case it was the ignored values causing a fuss. I managed to compile it from the command line in the main directory and it works fine, but it would be awesome to have a nice MATLAB interface :) If anyone's managed to get it up and running I'd be super grateful for any help!

If anyone stumbles across this then I found a method that seems to work. I tried using the Makefile in the matlab folder directly but kept strange getting compiler errors asking to change the source directory. However, if you go into the Makefile and change the line
MEX_OPTION = CC\#$(CXX) CXX\#$(CXX) CFLAGS\#"$(CFLAGS)" CXXFLAGS\#"$(CFLAGS)"
to
MEX_OPTION = CC=$(CXX) CXX=$(CXX) CFLAGS="$(CFLAGS)" CXXFLAGS="$(CFLAGS)"
it should work.

Related

or-tools: build examples on vs2022

I've downloaded the binaries: or-tools_VisualStudio2022-64bit_v9.3.10497
I'm using vs2022 on win10. My shell has cygwin in the path if it's related.
I ran
%comspec% /k "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat"
cl.exe is in the path, and which.exe finds it.
I ran make test_cc, but it complained
the cl command was not found in your PATH
exit 127
make: *** [Makefile:271: test_cc] Error 127
The var CXX_BIN was empty even though which cl returned the correct path. I set it manually to cl.
Then, there was a complaint about echo and a newline, which I commented out. Then, it couldn't find md, so I created manually md objs.
A few of the examples were built, but then it stopped with another error. For now, I just got what I want:
make run SOURCE=examples/cpp/solve.cc
but probably there was an easier way to get it?
I tried to build it from the source using cmake. Doesn't work off-the-shelf as well:
Build abseil-cpp: OFF
...
CMake Error at C:/prj-external-libs/vcpkg/scripts/buildsystems/vcpkg.cmake:824 (_find_package):
By not providing "Findabsl.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "absl", but
CMake did not find one.
Could not find a package configuration file provided by "absl" with any of
the following names:
abslConfig.cmake
absl-config.cmake
Add the installation prefix of "absl" to CMAKE_PREFIX_PATH or set
"absl_DIR" to a directory containing one of the above files. If "absl"
provides a separate development package or SDK, be sure it has been
installed.
Call Stack (most recent call first):
cmake/deps.cmake:33 (find_package)
CMakeLists.txt:304 (include)
If finds gurobi95.dll, but it can't find the function GRBtunemodeladv.
On failure, solve.exe crashes with (unknown) names in the stack trace. Need to add debug symbols and graceful error handling.
cmake looks more promising, and I was missing dependencies. Should give it a flag -DBUILD_DEPS:BOOL=ON.
OR-Tools depends on few external dependencies so CMake build will try to find them using the idiomatic find_package() => your distro/env(vcpkg ?) must provide them, just regular CMake stuff here.
ref: https://cmake.org/cmake/help/latest/command/find_package.html
note: we provide few findFoo.cmake here https://github.com/google/or-tools/tree/main/cmake
We also provide a meta option to build statically all our dependencies, simply pass -DBUILD_DEPS=ON cmake option at configure time.
You can also build only some of them, please take a look at
https://github.com/google/or-tools/tree/main/cmake#dependencies
Concerning Gurobi and GRBtunemodeladv symbol, this one has been removed by last version of Gurobi so we fix it in v9.4/main/stable branch...
see: https://github.com/google/or-tools/commit/d6e0feb8ae96368523deb99fe4318d32e80e8145

Update from Qt 5.5.1 to Qt 5.6 leads to linking errors

I just try to update a project from Qt5.5.1 to Qt5.6 and now it fails during linking.
C:/Qt/Qt5.6.0/Tools/mingw492_32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -lC:/Qt/Qt5.6.0/5.6/mingw49_32/lib/liblibQt5Core.a
C:/Qt/Qt5.6.0/Tools/mingw492_32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -lC:/Qt/Qt5.6.0/5.6/mingw49_32/lib/liblibQt5Sql.a
C:/Qt/Qt5.6.0/Tools/mingw492_32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -lC:/Qt/Qt5.6.0/5.6/mingw49_32/lib/liblibQt5Gui.a
C:/Qt/Qt5.6.0/Tools/mingw492_32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -lC:/Qt/Qt5.6.0/5.6/mingw49_32/lib/liblibQt5Widgets.a
collect2.exe: error: ld returned 1 exit status
The programm compiled fine with QT5.5.1 using qbs.
Now I added the new QT Version and I get these errors.
I have no idea, why qbs adding two time the "lib" prefix, nor why qbs is trying to use it at all. This program should use the shared libraries of Qt.
Could someone give me a hint, how I can fix this? Or what the cause of the problem might be?
This issue was resolved in qbs 1.5.0.

base does not contain a CLISP linking set error

I am trying to call Lisp code from a C function and, while following the tutorial, I am stuck at
clisp-link add base base+sort sort
This gives me error: base does not contain a CLISP linking set.
I have followed the tutorial step-by-step but this point is a blocker.
Is someone aware of the reason?
Chances are there is no base sub-directory in your working directory because you did not build clisp yourself.
Try clisp -help to find out where your base is located and give clisp-link the full path.
If you supply the full path to your clisp installation directory:
clisp-link add /usr/lib/clisp-2.49/base base+sort sort
it should work.
The error message you are getting indicates that base is missing one or more of the following files:
lisp.a
lisp.run
lispinit.mem
modules.h
modules.o
makevars
in which case you should file a bug report with your vendor.

Eclipse CDT omits leading dash from -D

I am compiling a .c file with a specified _D option MY_OPT. In the properties -> c++ build -> settings -> gcc c compiler -> symbols I creqated an entry and put MY_OPT in as the value.
When I compile I get error 127 saying that DMY_OPT cannot be found. I learned that error 127 means it realy came from bash and, after a bit of thought, I realized that since the dash is not there (as in -DMY_OPT) bash indeed would report that there is no input file named DMY_OPT to be found.
I searched google and stackoverflow and found lots of similar questions, but can't formulate one with narrow enough search terms to fine any remotely related answer, so I hope someone here can help.
NOTE: I removed the SYMBOL and instead put a -DMY_OPT in the miscellaneous field. No change (or I am getting the Eclipse Juno bug about not deleting previous errors.)
I discovered the answer to this question was the test of the overall command line built by Eclipse. Mine read
${COMMAND ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS} } ${FLAGS}
^ ^
} accidentally moved to here ---------------------->|
I had meant to move ${FLAGS} to the end of the command line but also managed to move the right side } form ${COMMAND}..
NOTE: This was done to get the compile command line to look like the linker command line where one should move ${FLAGS} to the end of the line thus putting the list of ".o's" and the "-o xxx" before the "_l's: and "-L's" as is required by some releases of gcc/g++.

How to build levmar using MATLAB?

I am using Windows XP and matlab version is 7.10.0.
I have the levmar(Levenberg Marquardt) package from http://www.ics.forth.gr/~lourakis/levmar/levmar-2.5.tgz
In the README file, we are told to compile in matlab using mex using the following command:
mex -DHAVE_LAPACK -I.. -O -L -L levmar.c -llevmar -lclapack -lblas -lf2c.
I downloaded lapack.lib , blas.lib and f2c.lib for windows
UPDATE:
The original error got resolved after I built a vc project file given in the package.
But now there are some error messages like :
levmar.lib(misc.obj) : error LNK2019: unresolved external symbol _dgemm_ referenced in function _dlevmar_trans_mat_mat_mult
Did you create a file with a mex-function gateway? You can't just compile a c-function for Matlab; you need to do a little bit of work to take care of the I/O between Matlab and the c-code.
If you follow the steps outlined in this document, you should do fine.
You may have a look at immoptibox, which comprises Levenberg-Marquardt algorithm as well.
I just figured it out after searching a while and noticed that the levmar package included a vc project file which i needed to build and it created a file called levmar.lib .
But now I am getting some errors which involves messages like 'unable to resolve external symbols'