ansariazim / treeBreaker

Algorithm to divide a phylogenetic tree into segments based on phenotypes at the leaves of the tree
25 stars 3 forks source link

can't install #8

Closed DamienFr closed 1 year ago

DamienFr commented 1 year ago

Dear Sir,

Installation of your tool sadly doesn't work on my ubuntu machine :

gcc -lgsl src/treeBreaker.c libs/knhx.c -o treeBreaker /usr/bin/ld: /tmp/ccJbilY8.o: in function main': treeBreaker.c:(.text+0xb7): undefined reference tolog' /usr/bin/ld: treeBreaker.c:(.text+0xd4): undefined reference to log' /usr/bin/ld: treeBreaker.c:(.text+0x238): undefined reference togsl_rng_mt19937' /usr/bin/ld: treeBreaker.c:(.text+0x240): undefined reference to gsl_rng_alloc' /usr/bin/ld: treeBreaker.c:(.text+0x268): undefined reference togsl_rng_set' /usr/bin/ld: treeBreaker.c:(.text+0x289): undefined reference to gsl_rng_set' /usr/bin/ld: treeBreaker.c:(.text+0xaae): undefined reference tolog' /usr/bin/ld: treeBreaker.c:(.text+0xcb5): undefined reference to gsl_rng_uniform' /usr/bin/ld: treeBreaker.c:(.text+0xd53): undefined reference togsl_rng_uniform' /usr/bin/ld: treeBreaker.c:(.text+0xd72): undefined reference to exp' /usr/bin/ld: treeBreaker.c:(.text+0xee4): undefined reference togsl_rng_uniform' /usr/bin/ld: treeBreaker.c:(.text+0xfe3): undefined reference to gsl_rng_uniform' /usr/bin/ld: treeBreaker.c:(.text+0x100a): undefined reference toexp' /usr/bin/ld: treeBreaker.c:(.text+0x10e2): undefined reference to gsl_rng_uniform' /usr/bin/ld: treeBreaker.c:(.text+0x1109): undefined reference toexp' /usr/bin/ld: treeBreaker.c:(.text+0x11c0): undefined reference to gsl_rng_uniform' /usr/bin/ld: treeBreaker.c:(.text+0x11e2): undefined reference toexp' /usr/bin/ld: /tmp/ccJbilY8.o: in function propose_new_b': treeBreaker.c:(.text+0x1911): undefined reference togsl_rng_uniform_int' /usr/bin/ld: /tmp/ccJbilY8.o: in function log_likelihood': treeBreaker.c:(.text+0x1a02): undefined reference togsl_sf_lngamma' /usr/bin/ld: treeBreaker.c:(.text+0x1a60): undefined reference to gsl_sf_lngamma' /usr/bin/ld: treeBreaker.c:(.text+0x1a91): undefined reference togsl_sf_lngamma' /usr/bin/ld: /tmp/ccJbilY8.o: in function log_b_prior': treeBreaker.c:(.text+0x1b6b): undefined reference toexp' /usr/bin/ld: treeBreaker.c:(.text+0x1b80): undefined reference to log' /usr/bin/ld: /tmp/ccJbilY8.o: in functionpropose_new_lambda': treeBreaker.c:(.text+0x1c1e): undefined reference to gsl_ran_gaussian' /usr/bin/ld: /tmp/ccJbilY8.o: in functioncalculate_log_evidence_model_0': treeBreaker.c:(.text+0x1e53): undefined reference to gsl_sf_lngamma' /usr/bin/ld: treeBreaker.c:(.text+0x1e6f): undefined reference togsl_sf_lngamma' /usr/bin/ld: treeBreaker.c:(.text+0x1ed7): undefined reference to gsl_sf_lngamma' /usr/bin/ld: /tmp/ccJbilY8.o: in functionm0_propose_lambda': treeBreaker.c:(.text+0x1f1e): undefined reference to gsl_ran_exponential' /usr/bin/ld: /tmp/ccJbilY8.o: in functionm0_propose_b': treeBreaker.c:(.text+0x1f76): undefined reference to gsl_rng_uniform' /usr/bin/ld: treeBreaker.c:(.text+0x1fad): undefined reference toexp' collect2: error: ld returned 1 exit status

ansariazim commented 1 year ago

It seems like to me that you need to install "GSL" first. Follow these instructions and install GSL.

wget ftp://ftp.gnu.org/gnu/gsl/gsl-1.16.tar.gz
tar xfz gsl-1.16.tar.gz
rm gsl-1.16.tar.gz
cd gsl-1.16 && ./configure && make

cd ../src  
gcc -I ../gsl-1.16 treeBreaker.c ../libs/knhx.c -o treeBreaker ../gsl-1.16/.libs/libgsl.a -lm 

Make sure that you install GSL in the repo directory and not in the src directory, otherwise the path about won't work. You just need to make sure that you refer to the GSL library in the correct way.

DamienFr commented 1 year ago

It did work, thank you very much !

I think that i previously installed gsl in the wrong directory