[Coin-discuss] Finding libs at run time and Cbc/Dylp

Francois Margot fmargot at andrew.cmu.edu
Mon Mar 27 13:52:44 EST 2006


Laci:

I don't know if Lou's explanation is sufficient to understand the problem.
If not, here is what  get.

On Sun, 26 Mar 2006, Laszlo Ladanyi wrote:

> On Sat, 25 Mar 2006, Francois Margot wrote:
>
>>
>> I jut downloaded COIN this morning from cvs. Several changes have
>> been made to the makefiles, apparently.
>>
>> After compiling several COIN packages (Bcp, Cbc) with all the defaults
>> Linux settings (including SHARED libraries), they are not able to find
>> the libraries in COIN/lib at run time. I have to add COIN/lib to
>> LD_LIBRARY_PATH to run them successfully. This happens on RedHat Enterprise
>> Linux and Fedora Core 3 using gcc3.2.
>>
>> I never noticed that before (but I usually work with STATIC libs).
>> Am I the only one experiencing this? If not, either the installation
>> procedures should indicate modifying LD_LIBRARY_PATH (as far as I know,
>> none of the INSTALL files mention this, and  this is not mentioned in
>> the FAQs either) or some changes in the makefiles are necessary.
>
> Interesting. I have no such problem. Could you check the final link line and
> see -f there are -Wl,-rpath,... arguments there? If not, can you check the
> value of SHLINK_PREFIX?
>

I don't understand how the different makefiles interact. When compiling
COIN/Examples/BAC with 'make' there, I get as linking:

g++  -DCOIN_NOT_CYGWIN -fomit-frame-pointer -ffast-math -march=i686  -Wall -Wpointer-arith -Wcast-qual -Wwrite-strings -Wconversion -pipe -DBCP_COMM_PROTOCOL_NONE  -I/home/prov/COIN/include -I/home/prov/COIN/include -I/home/prov/COIN/Clp/include -I/home/prov/COIN/include -I/home/prov/COIN/include -I/home/prov/COIN/Bcp/include -I/home/prov/COIN/Examples/BAC/include -DCOIN_HAS_CGL -DCOIN_HAS_OSICLP -DCOIN_HAS_CLP -DCOIN_HAS_OSI -DCOIN_HAS_COIN -DPARANOID -DDO_TESTS -DBCP_STATISTICS -DLP  -o /home/prov/COIN/Examples/BAC/Linux-g/bcps /home/prov/COIN/Bcp/Linux-g/BCP_lp_param.o /home/prov/COIN/Bcp/Linux-g/BCP_USER.o /home/prov/COIN/Bcp/Linux-g/BCP_node_change.o /home/prov/COIN/Bcp/Linux-g/BCP_warmstart_basis.o /home/prov/COIN/Bcp/Linux-g/BCP_warmstart_dual.o /home/prov/COIN/Bcp/Linux-g/BCP_solution.o /home/prov/COIN/Bcp/Linux-g/BCP_lp_pool.o /home/prov/COIN/Bcp/Linux-g/BCP_lp_user.o /home/prov/COIN/Bcp/Linux-g/BCP_vector_sanity.o /home/prov/COIN/Bcp/Linux-g/BCP_matrix.o /home/prov/COIN/Bcp/Linux-g/BCP_matrix_pack.o /home/prov/COIN/Bcp/Linux-g/BCP_problem_core.o /home/prov/COIN/Bcp/Linux-g/BCP_var.o /home/prov/COIN/Bcp/Linux-g/BCP_cut.o /home/prov/COIN/Bcp/Linux-g/BCP_obj_change.o /home/prov/COIN/Bcp/Linux-g/BCP_indexed_pricing.o /home/prov/COIN/Bcp/Linux-g/BCP_branch.o /home/prov/COIN/Bcp/Linux-g/BCP_lp_branch.o /home/prov/COIN/Bcp/Linux-g/BCP_lp_node.o /home/prov/COIN/Bcp/Linux-g/BCP_lp_result.o /home/prov/COIN/Bcp/Linux-g/BCP_lp.o /home/prov/COIN/Bcp/Linux-g/BCP_tm_node.o /home/prov/COIN/Bcp/Linux-g/BCP_tm_user.o /home/prov/COIN/Bcp/Linux-g/BCP_tm.o /home/prov/COIN/Bcp/Linux-g/BCP_tm_param.o /home/prov/COIN/Bcp/Linux-g/BCP_warmstart_pack.o /home/prov/COIN/Bcp/Linux-g/BCP_process.o /home/prov/COIN/Bcp/Linux-g/BCP_lp_main.o /home/prov/COIN/Bcp/Linux-g/BCP_lp_main_loop.o /home/prov/COIN/Bcp/Linux-g/BCP_lp_create_lp.o /home/prov/COIN/Bcp/Linux-g/BCP_lp_convert_OsiWarmStart.o /home/prov/COIN/Bcp/Linux-g/BCP_lp_colrow.o /home/prov/COIN/Bcp/Linux-g/BCP_lp_generate_cuts.o /home/prov/COIN/Bcp/Linux-g/BCP_lp_generate_vars.o /home/prov/COIN/Bcp/Linux-g/BCP_lp_fathom.o /home/prov/COIN/Bcp/Linux-g/BCP_lp_branching.o /home/prov/COIN/Bcp/Linux-g/BCP_lp_msg_node_send.o /home/prov/COIN/Bcp/Linux-g/BCP_lp_msg_node_rec.o /home/prov/COIN/Bcp/Linux-g/BCP_lp_msgproc.o /home/prov/COIN/Bcp/Linux-g/BCP_lp_misc.o /home/prov/COIN/Bcp/Linux-g/BCP_cg_main.o /home/prov/COIN/Bcp/Linux-g/BCP_cg.o /home/prov/COIN/Bcp/Linux-g/BCP_cg_param.o /home/prov/COIN/Bcp/Linux-g/BCP_cg_user.o /home/prov/COIN/Bcp/Linux-g/BCP_vg_main.o /home/prov/COIN/Bcp/Linux-g/BCP_vg.o /home/prov/COIN/Bcp/Linux-g/BCP_vg_param.o /home/prov/COIN/Bcp/Linux-g/BCP_vg_user.o /home/prov/COIN/Bcp/Linux-g/BCP_tm_main.o /home/prov/COIN/Bcp/Linux-g/BCP_tm_msgproc.o /home/prov/COIN/Bcp/Linux-g/BCP_tm_functions.o /home/prov/COIN/Bcp/Linux-g/BCP_tm_statistics.o /home/prov/COIN/Bcp/Linux-g/BCP_tm_trimming.o /home/prov/COIN/Bcp/Linux-g/BCP_tm_msg_node_send.o /home/prov/COIN/Bcp/Linux-g/BCP_tm_msg_node_rec.o /home/prov/COIN/Bcp/Linux-g/BCP_tm_commandline.o /home/prov/COIN/Bcp/Linux-g/BCP_message_single.o /home/prov/COIN/Examples/BAC/Linux-g/BB_tm.o /home/prov/COIN/Examples/BAC/Linux-g/BB_lp.o /home/prov/COIN/Examples/BAC/Linux-g/BB.o /home/prov/COIN/Examples/BAC/Linux-g/BB_cut.o /home/prov/COIN/Examples/BAC/Linux-g/BB_user_data.o /home/prov/COIN/Examples/BAC/Linux-g/BB_init.o /home/prov/COIN/Bcp/Linux-g/BCP_INST_vector_gen.o /home/prov/COIN/Bcp/Linux-g/BCP_INST_vector_spec.o /home/prov/COIN/Bcp/Linux-g/BCP_INST_vector_ptr.o /home/prov/COIN/Bcp/Linux-g/BCP_INST_vector_ptr_purge.o /home/prov/COIN/Bcp/Linux-g/BCP_INST_system.o   -L/home/prov/COIN/lib -L/home/prov/COIN/lib -L/home/prov/COIN/lib -L/home/prov/COIN/lib -L/home/prov/COIN/lib  -lCgl -lOsiClp -lClp -lOsi -lCoin   -lm
make[1]: Leaving directory `/home/prov/COIN/Examples/BAC'

Printing the value of SHLINKPREFIX just before the linking command
yields an empty string. So, apparently, SHLINKPREFIX is not set to 
-Wl,-rpath, as I would expect it to be from line 87 in 
Coin/Makefiles/Makefile.Linux. What is even more
strange is that if I put junk inside Coin/Makefiles/Makefile.Linux, 
around line 87, i.e. something like

ifeq (${LibType},SHARED)
zz
     LD  := $(CXX) -o
     LIBLDFLAGS := -shared
     LIBEXT := $(SHARED_LIBEXT)
     CXXFLAGS += -fPIC
     SHLINKPREFIX := -Wl,-rpath,
else

and then I try to compile BAC, I get:

(cd /home/prov/COIN/Osi/OsiClp && make install)
make[1]: Entering directory `/home/prov/COIN/Osi/OsiClp'
/home/prov/COIN/Makefiles/Makefile.Linux:83: *** missing separator.  Stop.
make[1]: Leaving directory `/home/prov/COIN/Osi/OsiClp'
make: *** [libdepend] Error 2

So, apparently, SHINKPREFIX is set properly in Makefile.Linux, but then
it is unset somewhere.

Francois


More information about the Coin-discuss mailing list