我正在使用 gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux 交叉编译以下 SDL 代码。usingubuntu-14.04
#include "SDL/SDL.h"
int main( int argc, char* args[] ) {
//The images
SDL_Surface* hello = NULL;
SDL_Surface* screen = NULL;
//Start SDL
SDL_Init( SDL_INIT_EVERYTHING );
//Set up screen
screen = SDL_SetVideoMode( 640, 480, 32, SDL_SWSURFACE );
//Load image
hello = SDL_LoadBMP( "Canada-Flag.bmp" );
//Apply image to screen
SDL_BlitSurface( hello, NULL, screen, NULL );
//Update Screen SDL_Flip( screen );
//Pause
SDL_Delay( 2000 );
//Free the loaded image
SDL_FreeSurface( hello );
//Quit SDL
SDL_Quit();
return 0;
}
我正在使用以下命令编译代码。
arm-linux-gnueabihf-gcc -o /home/samples/display1 /home/samples/display1.c -lSDL
以下是我之后收到的错误。
/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/bin/ld: cannot find -lSDL collect2: error: ld returned 1 exit status
但是如果我为主机编译它,则是相同的代码。
gcc -o /home/samples/display1 /home/samples/display1.c -lSDL
它没有出现任何错误并且运行良好。
请您提出建议。
答案1
您缺少链接路径的设置,例如:-L/path/to/libswithsdl then -lSDL
例子:
arm-none-linux-gnueabi-gcc -I./thirdparty/sdl/include -L./thirdparty/sdl/lib ./src/main.c -o ./out/main
lib 文件夹必须包含.so 文件,因此您只需将其添加到搜索路径,这对于链接就可以了。
您需要确保目标上有该库,要么将其与可执行文件一起推送,要么使用 rpath 或设置 LD_LIBRARY_PATH 以包含该搜索路径