Menu

No rule to make target

Aslan
2012-04-26
2012-09-26
  • Aslan

    Aslan - 2012-04-26

    Hello!
    I'm trying to link sdl.dll to my project, first made sdl.def using Borland
    impdef, then sdl.a using dlltool, seems that it contains all dll exported
    functions (prefixed with _). Then I've added sdl.a to my project and
    got Linker Error : undefined reference to.... As I've read from somewhere,
    I've added Project Option->Files->sdl.a ->"Include in linking", now I got
    :
    exe: No rule to make target ../../Lib/SDL/bin/sdl.o', needed bysdl1.exe'. Stop.*
    What am I doing wrong?

     
  • Jim Pattee

    Jim Pattee - 2012-04-26

    Post the entire compile log. You can copy it by a right click in the compile
    window.

     
  • Aslan

    Aslan - 2012-04-27

    jimp03, thank for reply

    Compiler log:
    Compiler: Default compiler
    Building Makefile: "C:\Projects\MY\sdl1\Makefile.win"
    Finding dependencies for file: C:\Projects\MY\sdl1\main.cpp
    Executing make...
    mingw32-make.exe -f "C:\Projects\MY\sdl1\Makefile.win" all
    mingw32-make.exe: *** No rule to make target sdl.o', needed bysdl1.exe'.
    Stop.

    Execution terminated

    Makefile

    Project: sdl1

    Makefile created by Dev-C++ 4.9.9.2

    CPP = g++.exe
    CC = gcc.exe
    WINDRES = windres.exe
    RES =
    OBJ = main.o sdl.o $(RES)
    LINKOBJ = main.o sdl.o $(RES)
    LIBS = -L"C:/Programs/Dev/DevCpp/lib" -L"C:/Projects/Lib/SDL/Lib"
    -L"C:/Projects/Lib/SDL-1.2.15-mingw32/lib/" -L"C:/Projects/Lib/SDL/bin/"
    -mwindows
    INCS = -I"C:/Programs/Dev/DevCpp/include" -I"C:/Projects/Lib/SDL/Include"
    CXXINCS = -I"C:/Programs/Dev/DevCpp/lib/gcc/mingw32/3.4.2/include"
    -I"C:/Programs/Dev/DevCpp/include/c++/3.4.2/backward"
    -I"C:/Programs/Dev/DevCpp/include/c++/3.4.2/mingw32"
    -I"C:/Programs/Dev/DevCpp/include/c++/3.4.2"
    -I"C:/Programs/Dev/DevCpp/include" -I"C:/Projects/Lib/SDL/Include"
    BIN = sdl1.exe
    CXXFLAGS = $(CXXINCS)
    CFLAGS = $(INCS)
    RM = rm -f

    .PHONY: all all-before all-after clean clean-custom

    all: all-before sdl1.exe all-after

    clean: clean-custom
    ${RM} $(OBJ) $(BIN)

    $(BIN): $(OBJ)
    $(CPP) $(LINKOBJ) -o "sdl1.exe" $(LIBS)

    main.o: main.cpp C:/Programs/Dev/DevCpp/include/stdio.h
    C:/Programs/Dev/DevCpp/include/_mingw.h
    C:/Programs/Dev/DevCpp/lib/gcc/mingw32/3.4.2/include/stddef.h
    C:/Programs/Dev/DevCpp/lib/gcc/mingw32/3.4.2/include/stdarg.h
    C:/Programs/Dev/DevCpp/include/sys/types.h C:/Projects/Lib/SDL/Include/sdl.h
    C:/Projects/Lib/SDL/Include/SDL_main.h
    C:/Projects/Lib/SDL/Include/SDL_stdinc.h
    C:/Projects/Lib/SDL/Include/SDL_config.h
    C:/Projects/Lib/SDL/Include/SDL_platform.h
    C:/Projects/Lib/SDL/Include/SDL_config_win32.h
    C:/Programs/Dev/DevCpp/include/stdlib.h
    C:/Programs/Dev/DevCpp/include/string.h
    C:/Programs/Dev/DevCpp/include/stdint.h C:/Programs/Dev/DevCpp/include/ctype.h
    C:/Projects/Lib/SDL/Include/begin_code.h
    C:/Projects/Lib/SDL/Include/close_code.h
    C:/Projects/Lib/SDL/Include/SDL_audio.h
    C:/Projects/Lib/SDL/Include/SDL_error.h
    C:/Projects/Lib/SDL/Include/SDL_endian.h
    C:/Projects/Lib/SDL/Include/SDL_mutex.h
    C:/Projects/Lib/SDL/Include/SDL_thread.h
    C:/Projects/Lib/SDL/Include/SDL_rwops.h
    C:/Projects/Lib/SDL/Include/SDL_cdrom.h
    C:/Projects/Lib/SDL/Include/SDL_cpuinfo.h
    C:/Projects/Lib/SDL/Include/SDL_events.h
    C:/Projects/Lib/SDL/Include/SDL_active.h
    C:/Projects/Lib/SDL/Include/SDL_keyboard.h
    C:/Projects/Lib/SDL/Include/SDL_keysym.h
    C:/Projects/Lib/SDL/Include/SDL_mouse.h
    C:/Projects/Lib/SDL/Include/SDL_video.h
    C:/Projects/Lib/SDL/Include/SDL_joystick.h
    C:/Projects/Lib/SDL/Include/SDL_quit.h
    C:/Projects/Lib/SDL/Include/SDL_loadso.h
    C:/Projects/Lib/SDL/Include/SDL_timer.h
    C:/Projects/Lib/SDL/Include/SDL_version.h
    $(CPP) -c main.cpp -o main.o $(CXXFLAGS)

     
  • Aslan

    Aslan - 2012-04-27

    Also tried to remove file sdl.a from Project Options->Files list and add
    to Project Options->Paramater->Linker
    -lsdl
    Now 've got compiler log

    **Compiler: Default compiler
    Building Makefile: "C:\Projects\MY\sdl1\Makefile.win"
    Finding dependencies for file: C:\Projects\MY\sdl1\main.cpp
    Executing make...
    mingw32-make.exe -f "C:\Projects\MY\sdl1\Makefile.win" all
    g++.exe main.o -o "sdl1.exe" -L"C:/Programs/Dev/DevCpp/lib"
    -L"C:/Projects/Lib/SDL/Lib" -L"C:/Projects/Lib/SDL-1.2.15-mingw32/lib/"
    -L"C:/Projects/Lib/SDL/bin/" -mwindows -lsdl

    C:/Projects/Lib/SDL-1.2.15-mingw32/lib//libsdl.dll.a: file not recognized:
    File format not recognized
    collect2: ld returned 1 exit status

    mingw32-make.exe: *** Error 1

    Execution terminated**

     
  • Jim Pattee

    Jim Pattee - 2012-04-27

    You have added sdl.a to the wrong place.
    Remove it from where it is now and add it to Project
    Option->Parameters->Linker.

     
  • Aslan

    Aslan - 2012-04-28

    Ok, I get through it, now linker scold :
    undefined reference to `WinMain@16'
    I would be to make console application with SDL window, is it possible?
    Couldn't link SDLmain, here is log:

    **Compiler: Default compiler
    Building Makefile: "C:\Projects\MY\sdl1\Makefile.win"
    Finding dependencies for file: C:\Projects\MY\sdl1\main.cpp
    Executing make...
    mingw32-make.exe -f "C:\Projects\MY\sdl1\Makefile.win" all
    g++.exe main.o -o "sdl1.exe" -L"C:/Programs/Dev/DevCpp/lib"
    -L"C:/Projects/Lib/SDL/Lib" -lmingw32 -lsdlmain -lsdl -mwindows

    C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x0):
    multiple definition of main' C:/Programs/Dev/DevCpp/lib/libmingw32.a(main.o)(.text+0x0):main.c: first defined here Warning: .drectve/manifestdependency:"type='win32' name='Microsoft.VC80.CRT'
    version='8.0.50727.762' processorArchitecture='x86'
    publicKeyToken='1fc8b3b9a1e18e3b'" /DEFAULTLIB:"MSVCRT" /DEFAULTLIB:"OLDNAMES"
    ' unrecognized
    C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x9):
    undefined reference to _imp____iob_func' C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x4): undefined reference to_imp_iob_func'
    C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x7):
    undefined reference to __security_cookie' C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x6d): undefined reference to_imp
    _iob_func'
    C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x160)
    : undefined reference to @__security_check_cookie@4' C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x5): undefined reference tosecurity_cookie'
    C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x65):
    undefined reference to _alloca_probe_16' C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x80): undefined reference to@
    security_check_cookie@4'
    C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0xbe):
    undefined reference to @__security_check_cookie@4' C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0xf1): undefined reference toSDL_main'
    C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x5):
    undefined reference to __security_cookie' C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x67): undefined reference to_alloca_probe_16'
    C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0x96):
    undefined reference to `_alloca_probe_16'

    C:/Projects/Lib/SDL/Lib\sdlmain.lib(./release/SDL_win32_main.obj)(.text+0xbf):
    undefined reference to `@__security_check_cookie@4'
    collect2: ld returned 1 exit status

    mingw32-make.exe: *** Error 1

    Execution terminated**

    Also tried tu put sdl_main.cc in project and got ton of erros due to dependent
    files

    Is there way beside recompiling SDL?

     
  • Jim Pattee

    Jim Pattee - 2012-04-28

    First try compiling it as a console program.
    In Project Options->General, highlight Win32Console.

    It would be better to just create a project file instead of using a makefile.
    File->New->Project, highlight Console Application.
    Then add your files to the project by right clicking on the project name.
    By doing this you will not need the generated makefile.

     
  • Aslan

    Aslan - 2012-04-29

    jimp03
    Thank for your appreciation. Finally I've solved this by sdl_devpack

     

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.