2011-10-07 28 views
7

Tôi đang cố gắng biên dịch svdlibc trên máy Mac 64 bit. Chạy tệp tạo trả về thông báo lỗi:Có thể biên dịch svdlibc trên máy mac (64 bit) không?

main.c:1: error: CPU you selected does not support x86-64 instruction set 
main.c:1: error: CPU you selected does not support x86-64 instruction set 
make: *** [main.o] Error 1 

Điều này không có ý nghĩa gì nhiều.

Các làm cho tập tin là:

# Linux or Windows: 
CC = gcc -Wall -O4 -march=i486 
# CC = icc -w1 -O3 -march=i486 

# Macintosh: 
ifeq ($(HOSTTYPE),powerpc) 
    CC = cc -pipe -O3 -Wall -fno-common -arch ppc 
endif 

LIBS=-lm 
OBJ=svdlib.o svdutil.o las2.o 

svd: Makefile main.o libsvd.a 
    ${CC} ${CFLAGS} -o svd main.o libsvd.a ${LIBS} 
    mv -f [email protected] ${HOSTTYPE}/[email protected] 
    ln -s ${HOSTTYPE}/[email protected] [email protected] 
main.o: Makefile main.c svdlib.h 
    ${CC} ${CFLAGS} -c main.c 

libsvd.a: ${HOSTTYPE} ${OBJ} 
    rm -f [email protected] ${HOSTTYPE}/[email protected] 
    ar cr [email protected] ${OBJ} 
    ranlib [email protected] 
mv -f [email protected] ${HOSTTYPE}/[email protected] 
    ln -s ${HOSTTYPE}/[email protected] [email protected] 
svdlib.o: Makefile svdlib.h svdlib.c 
    ${CC} ${CFLAGS} -c svdlib.c 
svdutil.o: Makefile svdutil.c svdutil.h 
    ${CC} ${CFLAGS} -c svdutil.c 
las2.o: Makefile las2.c svdlib.h svdutil.h 
    ${CC} ${CFLAGS} -c las2.c 
clean: 
    rm *.o 

$(HOSTTYPE): 
    if test ! -d $(HOSTTYPE); \ 
    then mkdir $(HOSTTYPE); fi 

Việc chỉnh sửa làm cho tập tin để thay đổi cờ -march cho phép biên soạn tiến hành nhưng dường như việc liên kết không thành công với:

ld: lto: could not merge in main.o because Invalid ALLOCA record for 
architecture x86_64 

Có ai làm điều này? Hoặc là có một thư viện svd khác mà tôi nên sử dụng thay thế? (Đối với ma trận thưa thớt lớn?)

EDIT: porneL dường như đã phát hiện sự cố. Thay đổi dòng trên cùng trong makefile thành:

CC = gcc -Wall -O3 -march=x86-64 

công việc biên dịch. Chưa thử nghiệm kết quả, nhưng trông rất hứa hẹn.

Trả lời

6

-O4 làm điều này vì một lý do nào đó. Sử dụng -O3 để thay thế.

+0

Tôi không thể tin được. Đây dường như là một vụ lừa đảo. –

0

Bạn có thể thử với cổng (http://www.macports.org/) có vẻ như nó là availablee:

svdlibc @ 1,34 (toán học, khoa học) SVDLIBC là một thư viện C để thực hiện giá trị số ít phân hủy

Về cơ bản bạn sẽ cài đặt macports sau đó, sudo cổng cài đặt svdlibc.

Các vấn đề liên quan