I compiled using just "make" command and included libcryptopp.a in my c++ project of my xcode. But it is giving errors ...
@halfelf 말했듯이, 당신은 그 엑스 코드가 사용하는 것 때문에 LLVM의 런타임 (libc++
)를 사용합니다. 보유하고있는 Crypto ++ 버전에 따라 GNU 런타임 (libstdc++
)을 사용하고있을 수도 있고 사용하지 않을 수도 있습니다.
이 문제를 해결하는 가장 쉬운 방법은 Master Checkout입니다. 마스터가 정상적으로 작동하기 때문에 마스터에서 정상적으로 작동하며 가끔씩 중단됩니다 (대부분의 개발은 별도의 지점에서 이루어짐). 암호화 ++의 이전 버전을 준수하지 않았기 때문에 마스터를 사용
$ git clone https://github.com/weidai11/cryptopp
Cloning into 'cryptopp'...
remote: Counting objects: 9116, done.
remote: Total 9116 (delta 0), reused 0 (delta 0), pack-reused 9116
Receiving objects: 100% (9116/9116), 8.05 MiB | 6.53 MiB/s, done.
Resolving deltas: 100% (6406/6406), done.
Checking connectivity... done.
가 필요합니다 사용자의 CXX
및 CXXFLAGS
. 당신은 그것을 수정하기 위해 메이크 파일을 편집해야만했다.
그런 다음, 다음을 수행하십시오
당신은 디버그/릴리즈 빌드, 기호 수준 및 최적화 레벨을 설정해야
export CXXFLAGS="-DNDEBUG -g2 -O2 -stdlib=libc++"
$ CXX=clang++ make -j 4
clang++ -DNDEBUG -g2 -O2 -stdlib=libc++ -fPIC -march=native -pipe -c cryptlib.cpp
clang++ -DNDEBUG -g2 -O2 -stdlib=libc++ -fPIC -march=native -pipe -c cpu.cpp
clang++ -DNDEBUG -g2 -O2 -stdlib=libc++ -fPIC -march=native -pipe -c shacal2.cpp
clang++ -DNDEBUG -g2 -O2 -stdlib=libc++ -fPIC -march=native -pipe -c md5.cpp
...
. makefile은 나머지 플래그를 추가합니다.
-stdlib=libc++
만 추가되었으므로 일부 손을 포기하고 있습니다. 가장 문제가없는 링크를 보장하기 위해 Xcode에서 사용하는 CXXFLAGS
을 사용해야합니다. 다른 CXXFLAGS
을 사용하면 수년 동안 많은 문제가 발생했습니다. 당신이 다음을 수행 할 수 있어야하므로
암호화 ++는 지방 바이너리 안전 (unlike cURL and OpenSSL)입니다. 사실, 당신을 위해 상자 밖으로 작동해야하므로, our test script tests this class of configurations (C++ (17)를 통해 C++ 03을 포함하여 인텔과 PPC 지방 바이너리) :
export CXXFLAGS="-DNDEBUG -g2 -O2 -stdlib=libc++ -arch i386 -arch x86_64"
$ CXX=clang++ make -j 4
$ make -j 4
clang++ -DNDEBUG -g2 -O2 -stdlib=libc++ -arch i386 -arch x86_64 -fPIC -march=native -pipe -c cryptlib.cpp
clang++ -DNDEBUG -g2 -O2 -stdlib=libc++ -arch i386 -arch x86_64 -fPIC -march=native -pipe -c cpu.cpp
clang++ -DNDEBUG -g2 -O2 -stdlib=libc++ -arch i386 -arch x86_64 -fPIC -march=native -pipe -c shacal2.cpp
clang++ -DNDEBUG -g2 -O2 -stdlib=libc++ -arch i386 -arch x86_64 -fPIC -march=native -pipe -c md5.cpp
...
을 Undefined symbols for architecture i386
을 피할 두 아키텍처를 사용하고 Undefined symbols for architecture x86_64
.
여기에는 관련 Crypto ++ wiki 페이지가 있지만 iOS 및 OS X 용입니다. 대부분 적용되지만 정확하게는 아닙니다. IOS (Xcode)
IOS (Command Line)
- 다음은 명령 줄에서 라이브러리 구축에 위키 기사입니다.당신은 실제로"컴파일러와 C++ 런타임"에서 논의 된 고통의 지점을 타격,하지만 명백하지 않을 :
기본 메이크업은'-march = native' 옵션을 구축 할 것 이는 x86_64 바이너리로 이어진다. – halfelf
그럼 어떻게해야합니까? @halfelf –
Common Crypto를 사용하지 않는 이유는 모든 "C"코드이며 하드웨어 지원을위한 최적화가 있습니다. – zaph