How to disable generation of shared objects (.so's) of a third-party library(mysql) which uses cmake - mysql

I am trying to build MySql Connector C(6.0.2) from source and the default build exports .so's in addition to the static libraries(.a's). I wanted to suppress the generation of the .so's and tried setting BUILD_SHARED_LIBS to OFF(which didn't work). Also tried setting CMAKE_LIBRARY_OUTPUT_DIRECTORY to /dev/null(which didn't work either). Does any one have any suggestions on how to get around this issue?
I am using cmake-2.8.4(on Ubuntu) and my cmake invocation looks something like this:
cmake -G "Unix Makefiles"
-DCMAKE_INSTALL_PREFIX=/path/to/install/root/
-DCMAKE_C_FLAGS="-m64"
-DBUILD_SHARED_LIBS:BOOL=OFF
[-DCMAKE_LIBRARY_OUTPUT_DIRECTORY:PATH=/dev/null]

Just grep for ADD_LIBRARY in CMakeLists.txt files and comment out the one that adds shared target

Related

TCL_LIB_SPEC missing in modules install

I'm trying to install modules from SourceForge and I'm getting an error that a variable named TCL_LIB_SPEC is not set. What is this supposed to be set to?
The answer here is to install the TCL development package
% yum install tcl-devel
This gives you a tclConfig.sh file at /usr/lib64/tcl8.5
So
% cd /usr/lib64/tcl8.5
% . ./tclConfig.sh
Then configure works.
It's supposed to be set to the instructions to use with your compiler for linking against the Tcl C library, and it should (conventionally) be generated by running the relevant configure script inside a Tcl source distribution. Or a distribution of Tcl (e.g., on Linux perhaps called tcl-dev) may have alternate correct values already set up.

How do I make Octave see installed Shogun libraries in Ubuntu 16.04?

I copied the commands (from these instructions: http://www.shogun-toolbox.org/install#ubuntu) into the terminal and they seem to have worked, but there is no documentation on how to make Octave find the libraries. I have tried modshogun and init_shogun but Octave cannot find them. I do have the libraries in usr/lib, and I have put that directory on PATH. I have even set usr/lib as my working directory in Octave and that did not help. As far as I have found, there is no Shogun documentation on what to do at this point.
I have also tried compiling Shogun from source, but configure couldn't find GCC. Apparently, this is a known problem with newer versions of GCC. I decided to ask for help with the former method because at least I have the libraries with that.
Edit: I am following the instructions here http://www.shogun-toolbox.org/install#manual-basics
When i do cd build and then "cmake -DINTERFACE_OCTAVE=ON" it tells me there is no cmakelists.txt. There is one in in the above folder, but when I go to that directory and do "cmake -DINTERFACE_OCTAVE=ON" again, it tells me "Shogun can only be built with GPL codes if the source files are in /home/derose/shogun/src/shogun/src/gpl. Please download or disable with LICENSE_GPL_SHOGUN=OFF."
However, when I add -LICENSE_GPL_SHOGUN=OFF as an option, i get the error "CMake Error: The source directory "/home/derose/shogun/src/shogun/-LICENSE_GPL_SHOGUN=OFF" does not exist."
You've linked to the Ubuntu install instructions. From there
These currently do contain the C++ library and Python bindings..
No word that this would include the GNU Octave binding. See below on the same page:
The native C++ interface is always included. The cmake options for building interfaces are -DINTERFACE_PYTHON=ON -DINTERFACE_R .. etc. For example, replace the cmake step above by cmake -DINTERFACE_PYTHON=ON...
So you have to grab the source and fire up cmake with something like -DINTERFACE_OCTAVE=ON
Steps to build the bleeding edge of shogun (the github repo) and the Octave interface:
git clone https://github.com/shogun-toolbox/shogun && cd shogun
git submodule update --init
mkdir build && cd build
cmake .. -DINTERFACE_OCTAVE=ON
make -j4

Compile MySQL 5.6.30 on CentOS 6.7 - "Manually-specified variables were not used"

I have downloaded the mysql-5.6.30.tar.gz source file, extracted and I'm using the following CMAKE command:
cmake /mysql-5.6.30 -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DWITH_CHARSET=CP1251=1
-DENABLE_THREAD_SAFE_CLIENT=1 -DMAX_INDEXES=250 -DDOWNLOAD_BOOST=1
-DWITH_BOOST=%HOME/mysqlboost -DENABLE_DOWNLOADS=1
Most of that is normal, apart from the MAX_INDEXES value of 250. The client has very specific requirements for this, and is the reason I am trying to compile this from source (there doesn't appear to be a way to change this value once MySQL is installed, must be done at compile).
CMake runs through the compilation (after i fixed various dependencies being missing and such), but at the end states:
-- Generating done
CMake Warning:
Manually-specified variables were not used by the project:
CMAKE_CC_COMPILER
DOWNLOAD_BOOST
ENABLE_THREAD_SAFE_CLIENT
MAX_INDEXES
WITH_BOOST
WITH_CHARSET
-- Build files have been written to: /mysql-5.6.30
This is a bit of an issue, as I specifically needed MAX_INDEXES to be written to the build files so I can install MySQL with it. Can anyone tell me A) Why is it ignoring every single variable I passed to it? and/or B) Is there any other way to enforce MAX_INDEXES (to at least 200) in a MySQL Installation. If it helps, it can be 5.6 or 5.7.
Thanks.
You can solve the MAX_INDEXES and ENABLE_THREAD_SAFE_CLIENT problem with this from the MySQL source directory (tested):
MY_FLAGS="DMAX_INDEXES=256 -DENABLE_THREAD_SAFE_CLIENT"
cmake -DCMAKE_C_FLAGS="$MY_FLAGS" -DCMAKE_CXX_FLAGS="$MY_FLAGS" .
The reason it ignored your variables was because they were not Cmake variables, but rather macros referenced by the source of MySQL (some).
The variables understood by Cmake are documented at https://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html
For the internal macros you have to search in the MySQL source.
According to mysql documentation on source configuration options, the configuration options you listed are eithes supported from a certain mysql v5.7 version or are not even listed on that page, meaning they are not mysql specific.
Compile a mysql v5.7.1 or higher from source to be able to set max_indexes config option.

Weird Cuda C installation (Ubuntu14.04)

I just came across a weird situation after installing cuda... I literally followed every single step suggested by the nvidia website: http://docs.nvidia.com/cuda/cuda-getting-started-guide-for-linux/#axzz3H0tm46yY.... everything seems to be fine, even the samples work... however when I try to run the "hello world" program presented in Cuda by Example documentation, the terminal displays:
The program 'nvcc' is currently not installed. You can install it by typing:
sudo apt-get install nvidia-cuda-toolkit
This is quite strange since nvcc should already be installed during the procedure suggested by the nvidia website....
Does anyone have any idea?
The PATH variable needs to include your cuda /bin directory (by default it is /usr/local/cuda-6.5/bin)
On Ubuntu you can edit the .bashrc file on your $HOME directory, adding the following;
export PATH=/usr/local/cuda-6.5/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-6.5/lib64:$LD_LIBRARY_PATH
If you are running a 32-bit Ubuntu version, then the paths are:
export PATH=/usr/local/cuda-6.5/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-6.5/lib:$LD_LIBRARY_PATH
After editing the bashrc file, source it (or simply restart the terminal):
source ~/.bashrc
Of course, if you have changed the default location of your CUDA directory you must change the PATHS accordingly.
PLUS: there are another options to tell the system where to find a library, a program, etc. like using enviromental modules, specify the complete path to the libraries and programs manually are another options. There are many methods out there!

Equivalent to libmysqldev FreeBSD

I have compiled a program in fedora using the mysql dev library (include mysql.h in header file). I need to compile in on FreeBSD. I do not want to download from source and compile but rather would like to download from ports or something equivalent to facilitate removing it if need be.
Does anyone know the equivalent of the libmysql-dev in FreeBSD. I have not found it in ports?
You do not need a special package for this. The standard mysql client package/port already includes the libraries and the header files you will need. The header files will end up, by
default, in /usr/local/include/mysql/ directory, while
the libraries will go to /usr/local/lib/mysql/.
So - just install a client from ports or packages, and you are set.
mysql.h is included in the mysql-client-xx port.
assuming you have a configure script or makefile you should set the LDFLAGS and CPPFLAGS environment variables to:
export LDFLAGS='-l /usr/local/lib'
export CPPFLAGS='-I /usr/local/include'
(or setenv, if using csh)
then ./configure and make as normal.
if you are compiling from the command line "gcc -o myprog mysource.c" just add the -I and -l options to your command and it should compile fine.
try: find /usr/local -iname 'mysql' to see files (headers, shared objects and binaries) you in fact have installed on your system.