MacOSs Sierra 10.12.2에 마법의 VLSI 소프트웨어를 구축했습니다. 여기에는 tclmagic.dylib 라이브러리 빌드가 포함됩니다. 매직 Exec에서 테스트 할 때 지금은 얻을 :심볼을 찾을 수 없지만 링크 중에 포함되었습니다.
magic
dyld: lazy symbol binding failed: Symbol not found: _HashInit
Referenced from: /usr/local/lib/magic/tcl/tclmagic.dylib
Expected in: flat namespace`
내가 검색 한 동안 포함 된 유틸리티 라이브러리 내부의 HashInit 기능을 발견 링크 :
gcc -g -I/usr/X11/include -I/Library/Frameworks/Tk.framework/Versions/8.6/Headers -I/Library/Frameworks/Tcl.framework/Versions/8.6/Headers -fno-common -Wimplicit-int -fPIC -I/Library/Frameworks/Tk.framework/Versions/8.6/Headers -I/Library/Frameworks/Tcl.framework/Versions/8.6/Headers -I. -I.. -o tclmagic.dylib -dynamiclib -flat_namespace -undefined suppress -noprebind \
../cmwind/libcmwind.o ../commands/libcommands.o ../database/libdatabase.o ../dbwind/libdbwind.o ../drc/libdrc.o ../debug/libdebug.o ../extract/libextract.o ../graphics/libgraphics.o ../select/libselect.o ../textio/libtextio.o ../tiles/libtiles.o ../windows/libwindows.o ../wiring/libwiring.o ../resis/libresis.o ../sim/libsim.o ../netmenu/libnetmenu.o ../plow/libplow.o ../utils/libutils.o ../ext2sim/libext2sim.o ../ext2spice/libext2spice.o ../calma/libcalma.o ../cif/libcif.o ../plot/libplot.o ../lef/liblef.o ../extflat/libextflat.o ../garouter/libgarouter.o ../mzrouter/libmzrouter.o ../router/librouter.o ../irouter/libirouter.o ../grouter/libgrouter.o ../gcr/libgcr.o ../tcltk/libtcltk.o -lc -lX11 -lGL -lGLU -lm -L/usr/X11/lib -lm
HashInit 기능은 내부 ../utils/libutils 상주 .영형. 은 또한 두 개의 바이너리 나노 -gU 사용했습니다과 기호가 발견된다 :
nm -gU utils/libutils.o | grep HashInit
0000000000002880 T _HashInit
00000000000028c0 T _HashInitClient
nm -gU magic/tclmagic.dylib| grep HashInit
000000000011ec70 T _HashInit
000000000011ecb0 T _HashInitClient
내가 지금 별도의 연결 명령을 시도하고 심볼 매핑 파일 덤프했습니다
ld -o tclmagic.dylib -dylib -flat_namespace -undefined suppress -noprebind ../cmwind/libcmwind.o ../commands/libcommands.o ../database/libdatabase.o ../dbwind/libdbwind.o ../drc/libdrc.o ../debug/libdebug.o ../extract/libextract.o ../graphics/libgraphics.o ../select/libselect.o ../textio/libtextio.o ../tiles/libtiles.o ../windows/libwindows.o ../wiring/libwiring.o ../resis/libresis.o ../sim/libsim.o ../netmenu/libnetmenu.o ../plow/libplow.o ../utils/libutils.o ../ext2sim/libext2sim.o ../ext2spice/libext2spice.o ../calma/libcalma.o ../cif/libcif.o ../plot/libplot.o ../lef/liblef.o ../extflat/libextflat.o ../garouter/libgarouter.o ../mzrouter/libmzrouter.o ../router/librouter.o ../irouter/libirouter.o ../grouter/libgrouter.o ../gcr/libgcr.o ../tcltk/libtcltk.o -lc -lX11 -lGL -lGLU -lm -L/usr/X11/lib -lm -macosx_version_min 10.12 -all_load -why_load -map debug_map
ld: warning: option -noprebind is obsolete and being ignored
을 다시 말하지만, 나는 기호를 사용할 수있는 참조 :
cat debug_map | grep HashInit
0x0011F390 0x00000040 [ 18] _HashInit
0x0011F3D0 0x00000150 [ 18] _HashInitClient
0x001DADFE 0x00000006 [ 18] _HashInit
0x001DAE04 0x00000006 [ 18] _HashInitClient
0x001DF2B8 0x0000000A [ 18] _HashInit
0x001DF2C2 0x0000000A [ 18] _HashInitClient
0x0020C1D8 0x00000008 [ 18] _HashInit
0x0020C1E0 0x00000008 [ 18] _HashInitClient`
, BTW 내가 비슷한 질문 here 및 here을 본 적이 있지만 나는 그들의 시나리오는 slightl 수 있습니다 생각 y는 cmake 실수로 인해 다른 하나는 다른 내 사건에 영향을 미치지 않는 DYLD_INSERT_LIBRARIES를 사용하여 해결되었습니다. 사전에
감사합니다, 로널드
안녕하세요 Tim! 답장을 보내 주셔서 대단히 감사합니다 ... (그리고 Magic & qflow btw를 유지하기 위해!) ... 어떤 시점에서 나는 스텁 라이브러리가 추가되어야하고 -DUSE_TCL_STUBS 및 -DUSE_TK_STUBS 정의를 추가해야한다는 것을 알았습니다. 그러나 나는 여전히 Tclmagic_Init에 대해 불평하는 dlsym 메시지를 받고 있습니다 ... 이제는 아이디어가 부족합니다 ... 감사합니다, 로널드 – 20Mhz