다음 명령으로 32 비트 asm 프로그램을 컴파일하려고합니다. as --32 select.s -o main.o
ld -m elf_i386 -I/lib/ld-linux.so.2 -lc main.o -o main
출력 : 다음 GCC 명령을 사용하여 In function _start':
(.text+0x21): undefined reference to
gcc 링커의 작동 방식과 공유 라이브러리를 다른 공유 라이브러리에 링크 할 때와 공유 라이브러리와 바이너리를 연결할 때 상황이 어떻게 다른지 이해하는 데 어려움을 겪고 있습니다. 우분투 16.04.1 LTS, gcc 5.4.0 및 ld 2.26.1을 사용하고 있습니다. 다음은 일부 C 소스 파일에서 실행되는 일련의 명령 세트입니다. 순서 1 : - [em
ld --gc-sections 명령 줄 플래그는 무시 될 것 같다 나는 GNU를 사용하고 $ cat gcs.c extern void magic(void); void callmagic(void) { magic(); } int uanswer = 42; int main(void) { return 0; } $ cat ofbin.scr OUTPUT_FORMAT(bi
링커 스크립트 나 맵 파일을 사용하여 심볼의 이름을 바꿀 수 있습니까? 저는 C++과 Fortran의 혼합으로 작성된 코드를 리눅스에서 하나 이상의 Fortran 컴파일러와 함께 사용할 수 있도록 조정하려고합니다. 현재 대소 문자를 구분할 수있는 옵션이있는 Solaris Studio 컴파일러 용으로 작성되었습니다. 나는 메이크 파일 (Makefile)에서와
DS-5 컴파일러를 사용하여 코드를 컴파일하려고합니다. 연결 상태에서 링커 오류가 발생합니다. 경고가 나오지만 정의되지 않은 참조 또는 이와 유사한 오류는 없습니다. 누군가가 같은 로그에 나를 도울 수있는 것은 당신이 32 비트 될 모든 열거 형을 강제로 -fno-짧은 열거 gcc가 컴파일러 스위치를 사용할 때이 문제가 발생할 수 /usr/local/DS-
나는 그런 디렉토리 구조를 가지고 : 심볼릭 링크 라이브러리에 디렉토리와 심볼릭 링크 점에 가리키는 : $ libtrotl.so -> /usr/local/lib64/tora-3.1/../libtrotl.so
$ instantclient -> /usr/lib/oracle/12.1/client64/lib
나는 도서관 libtrotl.so을한다면 dlope
기본 경로 (RPATH)를 검색하는 대신 라이브러리의 절대 경로를 사용하려면 ELF 파일을 만들어야합니다. 이 readelf에서 결과입니다 readelf -d example
Dynamic section at offset 0xe28 contains 24 entries:
Tag Type Name/Value
0x0000000000000001
std::regex을 사용하는 C++ 14 응용 프로그램이 있습니다. 일부 정규식의 경우 콜레이트면을 사용할 수없는 경우 std::regex 생성자는 std::bad_cast (std::use_facet을 통해)을 전달합니다. 내 응용 프로그램을 소스가없는 .so로 배포 된 타사 라이브러리와 연결하려고합니다. 이 라이브러리는 glibc에서 필요한 모든 것을
간단한 makefile 프로젝트를 작성하고 있습니다. 내가 두 단계에서 프로그램을 구축하기 위해 노력하고있어 : 뭔가를 생각하는 실행 내로 다른 디렉토리에 링크 개체를 오브젝트 파일을 컴파일 소스 파일 저장 다음과 같이 간단하게 : all:
gcc -o ~/some_dir/main.o -c main.c
ld -o my_program mai
lib2에서 사용되는 lib1의 C 파일에 정의 된 상수 변수에 프로그램을 컴파일하고 "정의되지 않은 참조"가 나타납니다. 컴파일 할 때 오류가 발생합니다. clang myfile.c -L. -L../lib2dir -llib1 -llib2
언젠가는 라이브러리를 다시 추가해야한다는 언젠가 기억하고 있습니다. 그렇게 했어. clang myfile.c -L.