LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Sabayon (https://www.linuxquestions.org/questions/sabayon-86/)
-   -   Still Yet another Sokoban Make-problem (https://www.linuxquestions.org/questions/sabayon-86/still-yet-another-sokoban-make-problem-4175582415/)

lg240176 06-16-2016 08:57 AM

Still Yet another Sokoban Make-problem
 
I hav got a problem with the game "Still Yet another Sokoban"

Code:

lars@lars-lenovo-b50-30 ~/Downloads/Programme/Linux/Spiele/syasokoban-2.0.1 $ make
gcc -ansi -Wall -I/usr/local/include -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -c src/Main.cpp -o src/Main.o
src/Main.cpp: In Funktion »int main(int, char**)«:
src/Main.cpp:25:24: Fehler: »chdir« wurde in diesem Gültigkeitsbereich nicht definiert
  chdir("SYASokoban.app");
                        ^
Makefile:28: die Regel für Ziel „src/Main.o“ scheiterte
make: *** [src/Main.o] Fehler 1
lars@lars-lenovo-b50-30 ~/Downloads/Programme/Linux/Spiele/syasokoban-2.0.1 $

Please i need help!
Thanks
Lars

smallpond 06-16-2016 02:56 PM

Code:

Error: 'chdir' was not declared in this scope
Means you need to add a line in Main.cpp

Code:

#include <unistd.h>

lg240176 06-17-2016 01:55 AM

I added the line in Main.cpp.
Here the Screeenoutput:

Code:

lars@lars-lenovo-b50-30 ~/Downloads/Programme/Linux/Spiele/syasokoban-2.0.1 $ make
gcc -ansi -Wall -I/usr/local/include -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -c src/Main.cpp -o src/Main.o
gcc -ansi -Wall -I/usr/local/include -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -c src/djControls.cpp -o src/djControls.o
src/djControls.cpp: In Elementfunktion »virtual bool djTextEdit::OnEvent(SDL_Event&, SDLMod)«:
src/djControls.cpp:62:14: Warnung: Vergleich zwischen vorzeichenbehafteten und vorzeichenlosen Ganzzahlausdrücken [-Wsign-compare]
    if (m_nPos<m_sText.length()) m_nPos++;
              ^
src/djControls.cpp: In Elementfunktion »virtual bool djList::OnEvent(SDL_Event&, SDLMod)«:
src/djControls.cpp:364:19: Warnung: Vergleich zwischen vorzeichenbehafteten und vorzeichenlosen Ganzzahlausdrücken [-Wsign-compare]
    if (m_nSelected<m_aItems.size()-1) m_nSelected++;
                  ^
In file included from src/djGraph.h:16:0,
                from src/djItem.h:11,
                from src/djControls.h:10,
                from src/djControls.cpp:8:
src/djUtils.h:23:24: Warnung: Vergleich zwischen vorzeichenbehafteten und vorzeichenlosen Ganzzahlausdrücken [-Wsign-compare]
 #define djMIN(a,b) ((a)<(b)?(a):(b))
                        ^
src/djControls.cpp:381:19: Anmerkung: bei Substitution des Makros »djMIN«
    int nNewSel = djMIN(m_aItems.size()-1, m_nSelected + m_nMax);
                  ^
src/djControls.cpp:398:40: Warnung: Vergleich zwischen vorzeichenbehafteten und vorzeichenlosen Ganzzahlausdrücken [-Wsign-compare]
    if (m_aItems.size()>0 && m_nSelected!=m_aItems.size()-1)
                                        ^
src/djControls.cpp: In Elementfunktion »virtual bool djList::OnMouseButtonDown(int)«:
src/djControls.cpp:443:18: Warnung: Vergleich zwischen vorzeichenbehafteten und vorzeichenlosen Ganzzahlausdrücken [-Wsign-compare]
  if (m_nSelected<m_aItems.size()-1) m_nSelected++;
                  ^
src/djControls.cpp:450:11: Warnung: Vergleich zwischen vorzeichenbehafteten und vorzeichenlosen Ganzzahlausdrücken [-Wsign-compare]
  if (nSel<m_aItems.size()-1)
          ^
src/djControls.cpp: In Elementfunktion »virtual void djList::Draw(SDL_Surface*, int, int)«:
src/djControls.cpp:491:12: Warnung: Vergleich zwischen vorzeichenbehafteten und vorzeichenlosen Ganzzahlausdrücken [-Wsign-compare]
    if (nSel<m_aItems.size()-1)
            ^
src/djControls.cpp:500:13: Warnung: Vergleich zwischen vorzeichenbehafteten und vorzeichenlosen Ganzzahlausdrücken [-Wsign-compare]
    if (nItem<m_aItems.size())
            ^
src/djControls.cpp: In Elementfunktion »void djList::SetItem(int, int, const char*)«:
src/djControls.cpp:566:26: Warnung: Vergleich zwischen vorzeichenbehafteten und vorzeichenlosen Ganzzahlausdrücken [-Wsign-compare]
  while (m_aItems.size()-1<nRow)
                          ^
src/djControls.cpp:569:39: Warnung: Vergleich zwischen vorzeichenbehafteten und vorzeichenlosen Ganzzahlausdrücken [-Wsign-compare]
  while (m_aItems[nRow].asText.size()-1<nColumn)
                                      ^
gcc -ansi -Wall -I/usr/local/include -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -c src/djItem.cpp -o src/djItem.o
gcc -ansi -Wall -I/usr/local/include -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -c src/djDesktop.cpp -o src/djDesktop.o
src/djDesktop.cpp: In Elementfunktion »bool CdjDesktop::LoadMouseCursorA(const char*, const char*)«:
src/djDesktop.cpp:103:64: Warnung: Operation auf »*(pRow + ((sizetype)(((long unsigned int)j) * 4ul)))« könnte undefiniert sein [-Wsequence-point]
    *(pRow + j) = (*(pRow+j) &= (0x00FFFFFF | (ucAlpha << 24)));
                                                                ^
gcc -ansi -Wall -I/usr/local/include -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -c src/djGraph.cpp -o src/djGraph.o
gcc -ansi -Wall -I/usr/local/include -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -c src/djSettings.cpp -o src/djSettings.o
src/djSettings.cpp: In Elementfunktion »bool CdjSettings::LoadSettings(const char*)«:
src/djSettings.cpp:45:29: Fehler: »strchr« wurde in diesem Gültigkeitsbereich nicht definiert
  char *sz = strchr(buf, '=');
                            ^
src/djSettings.cpp:51:41: Fehler: »strlen« wurde in diesem Gültigkeitsbereich nicht definiert
    Setting.szKey  = new char[strlen(buf)+1];
                                        ^
src/djSettings.cpp:53:31: Fehler: »strcpy« wurde in diesem Gültigkeitsbereich nicht definiert
    strcpy(Setting.szKey,  buf);
                              ^
src/djSettings.cpp: In Elementfunktion »void CdjSettings::SetSetting(const char*, const char*)«:
src/djSettings.cpp:82:42: Fehler: »strcmp« wurde in diesem Gültigkeitsbereich nicht definiert
  if (!strcmp(szKey, m_aSettings[i].szKey))
                                          ^
src/djSettings.cpp:85:52: Fehler: »strlen« wurde in diesem Gültigkeitsbereich nicht definiert
    m_aSettings[i].szValue = new char[strlen(szValue)+1];
                                                    ^
src/djSettings.cpp:86:42: Fehler: »strcpy« wurde in diesem Gültigkeitsbereich nicht definiert
    strcpy(m_aSettings[i].szValue, szValue);
                                          ^
src/djSettings.cpp:92:41: Fehler: »strlen« wurde in diesem Gültigkeitsbereich nicht definiert
  Setting.szKey  = new char[strlen(szKey)+1];
                                        ^
src/djSettings.cpp:94:29: Fehler: »strcpy« wurde in diesem Gültigkeitsbereich nicht definiert
  strcpy(Setting.szKey, szKey);
                            ^
src/djSettings.cpp: In Elementfunktion »char* CdjSettings::FindSetting(const char*)«:
src/djSettings.cpp:131:42: Fehler: »strcmp« wurde in diesem Gültigkeitsbereich nicht definiert
  if (!strcmp(szKey, m_aSettings[i].szKey))
                                          ^
src/djSettings.cpp: In Elementfunktion »int CdjSettings::GetSettingInt(const char*, int)«:
src/djSettings.cpp:162:16: Fehler: »atoi« wurde in diesem Gültigkeitsbereich nicht definiert
  return atoi(sz);
                ^
src/djSettings.cpp: In Elementfunktion »float CdjSettings::GetSettingFloat(const char*, float)«:
src/djSettings.cpp:170:16: Fehler: »atof« wurde in diesem Gültigkeitsbereich nicht definiert
  return atof(sz);
                ^
src/djSettings.cpp: In Elementfunktion »int CdjSettings::GetSettingInt(const char*, int)«:
src/djSettings.cpp:163:1: Warnung: Kontrollfluss erreicht Ende von Nicht-void-Funktion [-Wreturn-type]
 }
 ^
src/djSettings.cpp: In Elementfunktion »float CdjSettings::GetSettingFloat(const char*, float)«:
src/djSettings.cpp:171:1: Warnung: Kontrollfluss erreicht Ende von Nicht-void-Funktion [-Wreturn-type]
 }
 ^
Makefile:28: die Regel für Ziel „src/djSettings.o“ scheiterte
make: *** [src/djSettings.o] Fehler 1
lars@lars-lenovo-b50-30 ~/Downloads/Programme/Linux/Spiele/syasokoban-2.0.1 $


pan64 06-17-2016 03:18 AM

see man atoi, man strchr ... to find out which includes are required

lg240176 06-17-2016 03:33 AM

Quote:

Originally Posted by pan64 (Post 5562310)
see man atoi, man strchr ... to find out which includes are required

How do you do that?
Please make it slow, I'm beginner in matters of linux sabayon.

pan64 06-17-2016 04:02 AM

type: man atoi (or man 3 atoi) and you will see at the beginning:
Code:

ATOI(3)                                                                          Linux Programmer's Manual                                                                          ATOI(3)

NAME
      atoi, atol, atoll, atoq - convert a string to an integer

SYNOPSIS
      #include <stdlib.h>

      int atoi(const char *nptr);
      long atol(const char *nptr);
      long long atoll(const char *nptr);
      long long atoq(const char *nptr);

and you will find the include you need

lg240176 06-17-2016 04:29 AM

I added the line
Code:

#include <stdlib.h>
in the file djSettings.cpp.

The Output:

Code:

lars@lars-lenovo-b50-30 ~/Downloads/Programme/Linux/Spiele/syasokoban-2.0.1 $ make
gcc -ansi -Wall -I/usr/local/include -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -c src/djSettings.cpp -o src/djSettings.o
src/djSettings.cpp: In Elementfunktion »bool CdjSettings::LoadSettings(const char*)«:
src/djSettings.cpp:46:29: Fehler: »strchr« wurde in diesem Gültigkeitsbereich nicht definiert
  char *sz = strchr(buf, '=');
                            ^
src/djSettings.cpp:52:41: Fehler: »strlen« wurde in diesem Gültigkeitsbereich nicht definiert
    Setting.szKey  = new char[strlen(buf)+1];
                                        ^
src/djSettings.cpp:54:31: Fehler: »strcpy« wurde in diesem Gültigkeitsbereich nicht definiert
    strcpy(Setting.szKey,  buf);
                              ^
src/djSettings.cpp: In Elementfunktion »void CdjSettings::SetSetting(const char*, const char*)«:
src/djSettings.cpp:83:42: Fehler: »strcmp« wurde in diesem Gültigkeitsbereich nicht definiert
  if (!strcmp(szKey, m_aSettings[i].szKey))
                                          ^
src/djSettings.cpp:86:52: Fehler: »strlen« wurde in diesem Gültigkeitsbereich nicht definiert
    m_aSettings[i].szValue = new char[strlen(szValue)+1];
                                                    ^
src/djSettings.cpp:87:42: Fehler: »strcpy« wurde in diesem Gültigkeitsbereich nicht definiert
    strcpy(m_aSettings[i].szValue, szValue);
                                          ^
src/djSettings.cpp:93:41: Fehler: »strlen« wurde in diesem Gültigkeitsbereich nicht definiert
  Setting.szKey  = new char[strlen(szKey)+1];
                                        ^
src/djSettings.cpp:95:29: Fehler: »strcpy« wurde in diesem Gültigkeitsbereich nicht definiert
  strcpy(Setting.szKey, szKey);
                            ^
src/djSettings.cpp: In Elementfunktion »char* CdjSettings::FindSetting(const char*)«:
src/djSettings.cpp:132:42: Fehler: »strcmp« wurde in diesem Gültigkeitsbereich nicht definiert
  if (!strcmp(szKey, m_aSettings[i].szKey))
                                          ^
Makefile:28: die Regel für Ziel „src/djSettings.o“ scheiterte
make: *** [src/djSettings.o] Fehler 1
lars@lars-lenovo-b50-30 ~/Downloads/Programme/Linux/Spiele/syasokoban-2.0.1 $


pan64 06-17-2016 04:48 AM

see post #4

lg240176 06-17-2016 05:29 AM

I haven't got the "man atoi"-command .
Code:

lars@lars-lenovo-b50-30 ~ $ man atoi
Kein Handbucheintrag für atoi vorhanden
lars@lars-lenovo-b50-30 ~ $


pan64 06-17-2016 05:38 AM

but you can check my post and also you can look for that man page on the net.

lg240176 06-17-2016 05:52 AM

I have the libs in djsettings.cpp.

The Output:
Code:

lars@lars-lenovo-b50-30 ~/Downloads/Programme/Linux/Spiele/syasokoban-2.0.1 $ make
gcc -ansi -Wall -I/usr/local/include -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -c src/djSettings.cpp -o src/djSettings.o
gcc -o syasokoban src/djFont.o src/Games.o src/GameRegistry.o src/djUtils.o src/Sokoban.o src/Game.o src/djMenu.o src/Main.o src/djControls.o src/djItem.o src/djDesktop.o src/djGraph.o src/djSettings.o -lstdc++ -lSDL -lpthread -lm
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/../../../../x86_64-pc-linux-gnu/bin/ld: src/djFont.o: relocation R_X86_64_32 against `_ZTV7CdjFont' can not be used when making a shared object; recompile with -fPIC
src/djFont.o: error adding symbols: Bad value
collect2: Fehler: ld gab 1 als Ende-Status zurück
Makefile:19: die Regel für Ziel „syasokoban“ scheiterte
make: *** [syasokoban] Fehler 1
lars@lars-lenovo-b50-30 ~/Downloads/Programme/Linux/Spiele/syasokoban-2.0.1 $


pan64 06-17-2016 06:36 AM

there are still several errors:
put -fPIC -pthread into CFLAGS (or similar probably) I do not really know because I did not see that makefile
do not use -lpthread.

knudfl 06-17-2016 08:17 AM

Syasokoban-2.0.1 builds OK with e.g. gcc-4.9.2 :
syasokoban-gcc43.patch
sed -i '13i #include <unistd.h>' src/Main.cpp

From http://download.opensuse.org/reposit....1-9.1.src.rpm
>>> The file syasokoban.spec

-

lg240176 06-17-2016 10:43 AM

That doesn't work.
The Windowsversion from SYAsokoban works.

david_joffe 10-08-2016 01:01 PM

Quote:

Originally Posted by lg240176 (Post 5561819)
I hav got a problem with the game "Still Yet another Sokoban"

Hi, I'm the author of Still Yet Another Sokoban and I've incorporated fixes for the compile issues you encountered into the latest source release on grayskygames.com - thanks! Let me know if you still have problems, or if any additional fixes are required, please let me know so I can update the Makefile.

Quote:

Originally Posted by pan64 (Post 5562365)
there are still several errors:
put -fPIC -pthread into CFLAGS (or similar probably) I do not really know because I did not see that makefile
do not use -lpthread.

Could you let me know if this is still an issue with the latest source? For me it compiles fine without making any pthread-related changes, at least on my dev system.


All times are GMT -5. The time now is 02:30 PM.