Gentoo Archives: gentoo-user

From: Mark Knecht <markknecht@×××××.com>
To: gentoo-user@l.g.o
Subject: [gentoo-user] [Slightly OT] Linking to a non-standard library installed using portage
Date: Thu, 03 Feb 2011 18:41:03
Message-Id: AANLkTikg7JRWUk5Fcbczx_eYTGucGFdR8pYguZ7cOkr2@mail.gmail.com
1 Hi,
2 This is going to be trivial for anyone who actually programs.
3 Thanks in advance.
4
5 How do I link to a library I installed using portage? If someone
6 could show me an example make file that would be great. I've no real
7 experience in C and what I did have was in Windows years ago so I'm
8 undertaking some study here. I wrote a simple little test program that
9 calculates a simple moving average using ta-lib:
10
11 mark@c2stable ~/CODE/CUDA/Mark $ cat ta-lib-ma.cu
12 #include <stdlib.h>
13 #include <ta-lib/ta_libc.h>
14
15 #define VECTOR_LEN 100
16
17 int main(int argc, char **argv)
18 {
19 int i;
20 double MyData[VECTOR_LEN];
21 double MySMA[VECTOR_LEN];
22 TA_Integer outBeg;
23 TA_Integer outNbElement;
24
25 for (i = 0; i < VECTOR_LEN; i++)
26 {
27 MyData[i] = (i*i)/(10*i);
28 }
29
30 TA_SMA(0, VECTOR_LEN-1, MyData, 10, &outBeg, &outNbElement, MySMA);
31
32 for ( i=0; i< outNbElement; i++ ) printf("Bar %d = %f\n", outBeg+1,
33 MySMA[i]);
34 return 0;
35 }
36 mark@c2stable ~/CODE/CUDA/Mark $
37
38
39 The program compiles fine using NVidia CUDA compiler nvcc creating an
40 object file ta-lib-ma.o:
41
42 mark@c2stable ~/CODE/CUDA/Mark $ nvcc -c ta-lib-ma.cu
43 mark@c2stable ~/CODE/CUDA/Mark $ ls -al ta-lib-ma.*
44 -rw-r--r-- 1 mark users 477 Feb 3 10:08 ta-lib-ma.cu
45 -rw-r--r-- 1 mark users 17184 Feb 3 10:12 ta-lib-ma.o
46 mark@c2stable ~/CODE/CUDA/Mark $
47
48 However I cannot figure out how to link it to the ta-lib files
49 installed by portage:
50
51 mark@c2stable ~/CODE/CUDA/Mark $ equery files ta-lib
52 [ Searching for packages matching ta-lib... ]
53 * Contents of sci-libs/ta-lib-0.4.0:
54 /usr
55 /usr/bin
56 /usr/bin/ta-lib-config
57 /usr/include
58 /usr/include/ta-lib
59 /usr/include/ta-lib/ta_abstract.h
60 /usr/include/ta-lib/ta_common.h
61 /usr/include/ta-lib/ta_defs.h
62 /usr/include/ta-lib/ta_func.h
63 /usr/include/ta-lib/ta_libc.h
64 /usr/lib64
65 /usr/lib64/libta_lib.a
66 /usr/lib64/libta_lib.la
67 /usr/lib64/libta_lib.so -> libta_lib.so.0.0.0
68 /usr/lib64/libta_lib.so.0 -> libta_lib.so.0.0.0
69 /usr/lib64/libta_lib.so.0.0.0
70 mark@c2stable ~/CODE/CUDA/Mark $
71
72 What do I link to?
73
74 I've tried various things like this but none seem to find the library correctly:
75
76 mark@c2stable ~/CODE/CUDA/Mark $ nvcc -L/usr/lib64/libta_lib
77 ta-lib-ma.cu -o ta-lib-ma
78 /tmp/tmpxft_00000a8b_00000000-13_ta-lib-ma.o: In function `main':
79 tmpxft_00000a8b_00000000-1_ta-lib-ma.cudafe1.cpp:(.text+0x9f):
80 undefined reference to `TA_SMA'
81 collect2: ld returned 1 exit status
82 mark@c2stable ~/CODE/CUDA/Mark $
83
84 Thanks in advance for any pointers.
85
86 Cheers,
87 Mark

Replies