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 |