2010-04-12 2 views
1

경로를 Alchemy's 'ar'도구로 지정하면 라이브러리를 링크하는 데 필요한 'l.bc'파일이 생성되지 않습니다.Alchemy에서 'ar'도구 사용하기

예를 들어, 여기에 내가 (작동) 경로를 지정하지 않는 경우입니다 :

asimmons-mac:test asimmons$ echo 'int main() { return 42; }' > testmain.cpp 
asimmons-mac:test asimmons$ echo 'int test1() { return -1; }' > test1.cpp 
asimmons-mac:test asimmons$ echo 'int test2() { return 1; }' > test2.cpp 
asimmons-mac:test asimmons$ g++ -c testmain.cpp 
asimmons-mac:test asimmons$ g++ -c test1.cpp 
asimmons-mac:test asimmons$ g++ -c test2.cpp 
asimmons-mac:test asimmons$ ar cr libtest.a test1.o test2.o 
asimmons-mac:test asimmons$ g++ testmain.cpp libtest.a 
llvm-ld, "-o=".(98237.achacks.o = "98237.achacks.exe"), -disable-opt -internalize-public-api-list=_start,malloc,free,__adddi3,__anddi3,__ashldi3,__ashrdi3,__cmpdi2,__divdi3,__fixdfdi,__fixsfdi,__fixunsdfdi,__fixunssfdi,__floatdidf,__floatdisf,__floatunsdidf,__iordi3,__lshldi3,__lshrdi3,__moddi3,__muldi3,__negdi2,__one_cmpldi2,__qdivrem,__adddi3,__anddi3,__ashldi3,__ashrdi3,__cmpdi2,__divdi3,__qdivrem,__fixdfdi,__fixsfdi,__fixunsdfdi,__fixunssfdi,__floatdidf,__floatdisf,__floatunsdidf,__iordi3,__lshldi3,__lshrdi3,__moddi3,__muldi3,__negdi2,__one_cmpldi2,__subdi3,__ucmpdi2,__udivdi3,__umoddi3,__xordi3,__subdi3,__ucmpdi2,__udivdi3,__umoddi3,__xordi3,__error /Users/asimmons/Development/alchemy-darwin-v0.5a/avm2-libc/lib/avm2-libc.l.bc /Users/asimmons/Development/alchemy-darwin-v0.5a/avm2-libc/lib/avm2-libstdc++.l.bc, test.l.bc 98237.achacks.o 

98237.achacks.swf, 5593510 bytes written 
asimmons-mac:test asimmons$ ls -l 
total 10992 
-rwxr-xr-x 1 asimmons staff 5593575 Apr 9 17:44 a.exe 
-rw------- 1 asimmons staff  1284 Apr 9 17:43 libtest.a 
-rw-r--r-- 1 asimmons staff  672 Apr 9 17:43 test.l.bc 
-rw-r--r-- 1 asimmons staff  27 Apr 9 17:43 test1.cpp 
-rwxr-xr-x 1 asimmons staff  536 Apr 9 17:43 test1.o 
-rw-r--r-- 1 asimmons staff  26 Apr 9 17:43 test2.cpp 
-rwxr-xr-x 1 asimmons staff  536 Apr 9 17:43 test2.o 
-rw-r--r-- 1 asimmons staff  26 Apr 9 17:43 testmain.cpp 
-rwxr-xr-x 1 asimmons staff  552 Apr 9 17:43 testmain.o 
asimmons-mac:test asimmons$ 

을 그리고 여기에 내가 (이 작동하지 않습니다) 경로를 지정 할 예입니다.

asimmons-mac:test asimmons$ mkdir lib 
asimmons-mac:test asimmons$ echo 'int main() { return 42; }' > testmain.cpp 
asimmons-mac:test asimmons$ echo 'int test1() { return -1; }' > test1.cpp 
asimmons-mac:test asimmons$ echo 'int test2() { return 1; }' > test2.cpp 
asimmons-mac:test asimmons$ g++ -c testmain.cpp 
asimmons-mac:test asimmons$ g++ -c test1.cpp 
asimmons-mac:test asimmons$ g++ -c test2.cpp 
asimmons-mac:test asimmons$ ar cr lib/libtest.a test1.o test2.o 
asimmons-mac:test asimmons$ g++ testmain.cpp lib/libtest.a 
llvm-ld, "-o=".(98638.achacks.o = "98638.achacks.exe"), -disable-opt -internalize-public-api-list=_start,malloc,free,__adddi3,__anddi3,__ashldi3,__ashrdi3,__cmpdi2,__divdi3,__fixdfdi,__fixsfdi,__fixunsdfdi,__fixunssfdi,__floatdidf,__floatdisf,__floatunsdidf,__iordi3,__lshldi3,__lshrdi3,__moddi3,__muldi3,__negdi2,__one_cmpldi2,__qdivrem,__adddi3,__anddi3,__ashldi3,__ashrdi3,__cmpdi2,__divdi3,__qdivrem,__fixdfdi,__fixsfdi,__fixunsdfdi,__fixunssfdi,__floatdidf,__floatdisf,__floatunsdidf,__iordi3,__lshldi3,__lshrdi3,__moddi3,__muldi3,__negdi2,__one_cmpldi2,__subdi3,__ucmpdi2,__udivdi3,__umoddi3,__xordi3,__subdi3,__ucmpdi2,__udivdi3,__umoddi3,__xordi3,__error /Users/asimmons/Development/alchemy-darwin-v0.5a/avm2-libc/lib/avm2-libc.l.bc /Users/asimmons/Development/alchemy-darwin-v0.5a/avm2-libc/lib/avm2-libstdc++.l.bc, lib/test.l.bc 98638.achacks.o 
llvm-ld: error: Cannot find linker input 'lib/test.l.bc' 
asimmons-mac:test asimmons$ ls -l 
total 56 
-rw-r--r-- 1 asimmons staff 552 Apr 9 17:46 98638.achacks.o 
drwxr-xr-x 3 asimmons staff 102 Apr 9 17:46 lib 
-rw-r--r-- 1 asimmons staff 27 Apr 9 17:45 test1.cpp 
-rwxr-xr-x 1 asimmons staff 536 Apr 9 17:46 test1.o 
-rw-r--r-- 1 asimmons staff 26 Apr 9 17:45 test2.cpp 
-rwxr-xr-x 1 asimmons staff 536 Apr 9 17:46 test2.o 
-rw-r--r-- 1 asimmons staff 26 Apr 9 17:45 testmain.cpp 
-rwxr-xr-x 1 asimmons staff 552 Apr 9 17:45 testmain.o 
asimmons-mac:test asimmons$ ls -l lib/ 
total 8 
-rw------- 1 asimmons staff 1284 Apr 9 17:46 libtest.a 
asimmons-mac:test asimmons$ 

그러나 링커 오류를가 lib 디렉토리/test.l.bc 찾을 수 없기 때문에 : 나는 lib 디렉토리 /하여 어느 것이에 연결 한 후 'LIB'에서 라이브러리를 넣어 'AR'을 이야기하려고 . 첫 번째 예제에서 libtest.a와 함께 'test.l.bc'가 어떻게 생성되었는지 주목하십시오. 그러나 두 번째 예제에서는 test.l.bc가 생성되지 않았습니다. 어디 갔지?

이것은 고의적 인 예입니다.하지만 알케미로 빌드하려고하는 프로젝트에서 make 스크립트는 라이브러리를 전체 경로로 생성 한 다음 그 방법으로 참조합니다. 'al.'이외의 곳에 라이브러리를 생성하려고하면 연금술의 'ar'도구가 손상된 것 같습니다.

다른 사람이 본 사람이 있습니까? 해결 방법이 있습니까?

fyi, 나는이 질문을 Alchemy formus에 게시했습니다.

답변

0

예 이런 일이 나에게도 일어나는 것으로 나타났습니다. 내 솔루션은 현재 디렉토리에 라이브러리를 작성한 후 mv를 작성한 후 적절한 디렉토리에 작성하는 것이 었습니다. 왜 그런지 모르겠다.

+0

나는 이것이 현재 유일한 해결책이라고 생각한다. 나는 내 프로젝트의 CMake 스크립트에서 문제를 해킹 할 수 있었고 바이너리 출력 디렉토리에 libs를 만들고 그것의 서브 디렉토리가 아닌 libs를 만들 수 있었다. – paleozogt