2014-06-17 28 views
0

我想編譯下面的代碼,在CELL BE模擬器(mambo)上。 //hello.cppu-ld找不到-lspe

#include <stdio.h> 
#include <stdlib.h> 
#include <errno.h> 
#include <libspe.h> 
#include <sched.h> 

extern spe_program_handle_t hello_spu; 
spe_gid_t gid; 
speid_t speids[8]; 
int status[8]; 

int main(int argc, char *argv[]){ 
int i; 

printf("Hello World!\n"); 

gid = spe_create_group (SCHED_OTHER, 0, 1); 
if (gid == NULL) { 
    fprintf(stderr, "Failed spe_create_group(errno=%d)\n", errno); 
    return -1; 
} 

if (spe_group_max (gid) < 8) { 
    fprintf(stderr, "System doesn't have eight working SPEs. I'm leaving.\n"); 
    return -1; 
} 

for (i = 0; i < 8; i++) { 
    speids[i] = spe_create_thread (gid, &hello_spu,NULL, NULL, -1, 0); 
    if (speids[i] == NULL) { 
    fprintf (stderr, "FAILED: spe_create_thread(num=%d, errno=%d)\n",i, errno); 
    exit (3+i); 
    } 
} 

for (i=0; i<8; ++i){ 
    spe_wait(speids[i], &status[i], 0); 
} 

__asm__ __volatile__ ("sync" : : : "memory"); 

return 0; 

}

//生成文件

######################################################################## 
#   Target 
######################################################################## 

PROGRAM_ppu64 = hello 


######################################################################## 
#   Local Defines 
######################################################################## 

IMPORTS  = ../spu/hello_spu.a -lspe 


######################################################################## 
#   make.footer 
######################################################################## 

include /opt/cell/sdk/buildutils/make.footer 

編譯在此之後,它提供了以下的輸出。

$make 
/opt/cell/toolchain/bin/ppu-gcc  -W -Wall -Winline -I. -I /opt/cell/sysroot usr/include -I /opt/cell/sysroot/opt/cell/sdk/usr/include -mabi=altivec -maltivec -O3 -c  

hello.c 
hello.c: In function 'main': 
hello.c:12: warning: unused parameter 'argc' 
hello.c:12: warning: unused parameter 'argv' 
/opt/cell/toolchain/bin/ppu-gcc -o hello hello.o  -L/opt/cell/sysroot/usr/lib64 -L/opt/cell/sysroot/opt/cell/sdk/usr/lib64 -R/opt/cell/sdk/usr/lib64 ../spu/hello_spu.a -lspe 
/opt/cell/toolchain/bin/ppu-ld: cannot find -lspe 
collect2: ld returned 1 exit status 
make: *** [hello] Error 1 

'ld' cannot find the -lspe library.的 「/選擇/單元/ SYSROOT/usr/lib目錄」 目錄包含以下庫和文件,

alf,    libblas.so,   libc_stubs.a,  libieee.a,  libnetpbm.so.10,  libnuma.so.1,   libsimdmath.so.3, 
crt1.o,   libblas.so.1,  libdl.a,   libm.a,   libnetpbm.so.10.35, libpthread.a,   libsimdmath.so.3.0.3, 
crti.o,   libBrokenLocale.a, libdl.so,   libmass.a,  libnldbl_nonshared.a, libpthread_nonshared.a, libspe2.so, 
crtn.o,   libBrokenLocale.so, libg.a,    libmassv.a,  libnsl.a,    libpthread.so,   libspe2.so.2, 
gconv,   libbsd.a,   libgmp.a,   libmcheck.a,  libnsl.so,    libresolv.a,    libspe2.so.2.2.0, 
gcrt1.o,   libbsd-compat.a,  libgmp.so,   libmp.a,   libnss_compat.so,  libresolv.so,   libthread_db.so, 
libalf.a,   libc.a,    libgmp.so.3,  libmpfr.a,  libnss_dns.so,   librpcsvc.a,    libutil.a, 
libalf.so,  libcidn.so,   libgmp.so.3.3.3, libmp.so,  libnss_files.so,  librt.a,     libutil.so, 
libalf.so.3,  libc_nonshared.a, libgmpxx.a,   libmp.so.3,  libnss_hesiod.so,  librtkaio.a,    Mcrt1.o, 
libalf.so.3.0.0, libcrypt.a,   libgmpxx.so,  libmp.so.3.1.7, libnss_nisplus.so,  librt.so,    Scrt1.o, 
libanl.a,   libcrypt.so,   libgmpxx.so.3,  libm.so,   libnss_nis.so,   libsimdmath.a, 
libanl.so,  libc.so,    libgmpxx.so.3.0.5, libnetpbm.so, libnuma.so,   libsimdmath.so 

如何鏈接到libspe2.so libspe.so? 請幫忙。

回答

0

您不要將這些鏈接在一起。他們是不同的東西。如果這是您想要的庫的版本,或者您安裝安裝libspe.so庫的庫的版本,則可以更新makefile以使用-lspe2

+0

發現libspe.so是不贊成使用的版本。使用[-lspe2]工作,但不得不改變整個程序。感謝名單。 – Shail