PSPx форум

PSPx форум (https://www.pspx.ru/forum/index.php)
-   Программирование для PSP (https://www.pspx.ru/forum/forumdisplay.php?f=101)
-   -   Проблема с функцией вывода часов на экран (с компиляцией) (https://www.pspx.ru/forum/showthread.php?t=90853)

frostegater 19.03.2011 14:58

Проблема с функцией вывода часов на экран (с компиляцией)
 
Уважаемые разработчики и просто понимающие люди, у меня к вам вопрос по использованию функции отображения часов в Homebrew.

Короче я пишу программу, почти все сделал (скоро выложу, когда уберу видимые баги) и вот меня заинтересовала функция вывода часов на экран (sceRtcGetCurrentClockLocalTime).

Все готово, но не компилится (sdk), выдает ошибку при компиляции эльфа. А именно не указывает ошибку а просто... при мейке =(


Лог
c:\>c:/pspsdk/bin/make
psp-gcc -I. -Ic:/pspsdk/psp/sdk/include -O2 -G0 -Wall -D_PSP_FW_VERSION=500 -L.
-Lc:/pspsdk/psp/sdk/lib -specs=c:/pspsdk/psp/sdk/lib/prxspecs -Wl,-q,-Tc:/pspsd
k/psp/sdk/lib/linkfile.prx main.o c:/pspsdk/psp/sdk/lib/prxexports.o -lpspdeb
ug -lpspdisplay -lpspge -lpspctrl -lpspsdk -lc -lpspnet -lpspnet_inet -lpspnet_a
pctl -lpspnet_resolver -lpsputility -lpspuser -lpspkernel -o template.elf
main.o: In function `CurrentTime':
main.c:(.text+0x2c): undefined reference to `sceRtcGetCurrentClockLocalTime'
collect2: ld returned 1 exit status
make: *** [template.elf] Error 1

c:\>pause


Код программы я не буду выкладывать, вот на пример элементарная программа для просто вывода времени:

main.o


Код:

#include <pspkernel.h>
#include <stdio.h>
#include <psprtc.h>
#include <psphprm.h>

char *CurrentTime() {
      char timeText[8];
      pspTime rtime;
      sceRtcGetCurrentClockLocalTime(&rtime);
      snprintf(timeText, 8, "%i : %i" , rtime.hour , rtime.minutes);
      return timeText;
}

PSP_MODULE_INFO("DisplayTime", 0, 1, 1);

PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);

int main(int argc, char *argv[])
{


printf ( CurrentTime );

        return 0;
}





Makefile


Код:

TARGET = DisplayTime
OBJS = main.o

INCDIR =
CFLAGS = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)
LIBS = -lpsppower -lpsputility

LDFLAGS =

EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = DisplayTime

PSP_FW_VERSION = 500
BUILD_PRX = 1

PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak



Фуух... Как я замучился, помогите пожалуйста...

Yoti 19.03.2011 15:17

Цитата:

Сообщение от Frostegater (Сообщение 950137)
А именно не указывает ошибку а просто

Цитата:

Сообщение от Frostegater (Сообщение 950137)
main.o: In function `CurrentTime':
main.c.text+0x2c): undefined reference to `sceRtcGetCurrentClockLocalTime'

А это что тогда?

frostegater 19.03.2011 16:14

Yoti,
Цитата:

main.o: In function `CurrentTime':
По моему это не часть ошибки... Просто начинает выполняться функция `CurrentTime'...
Хм... но тогда что бы это значило?

Цитата:

main.c:(.text+0x2c): undefined reference to `sceRtcGetCurrentClockLocalTime'
Неопределённая ссылка на sceRtcGetCurrentClockLocalTime, верно? Опять не понимаю, что это значит... а особенно: (.text+0x2c)...
С логами от сдк 2 раз сталкиваюсь =(

Yoti 19.03.2011 16:34

Цитата:

Сообщение от Frostegater (Сообщение 950143)
Просто начинает выполняться функция `CurrentTime'...

Мне казалось, ты знаешь английский. Почему же не можешь прочесть "In function `CurrentTime'"?

Цитата:

Сообщение от Frostegater (Сообщение 950143)
Неопределённая ссылка на sceRtcGetCurrentClockLocalTime, верно? Опять не понимаю, что это значит...

Ага. Подумай.

Цитата:

Сообщение от Frostegater (Сообщение 950143)
(.text+0x2c)

В некоторых случаях компилятор указывает не строку в исходном файле, а относительное смещение в готовом elf. В данном случае это не критично, с какой частью кода нужно разбираться указано ранее.

frostegater 20.03.2011 06:50

Цитата:

Мне казалось, ты знаешь английский. Почему же не можешь прочесть "In function `CurrentTime'"?
Ммм.. действительно. Английский знаю, но отличаюсь особой невнимательностью и пока неопытностью...

Короче у меня есть небольшие успехи...
Вобщем я запихнул char за intmain и перестало лагать при компиляции без использования в других функциях. Но как только я пытаюсь использовать char в функции printf() - сразу анологичная ошибка, но в другом смещении =( Буду думать... В следующих версиях проги может исполню отображение времени.

Да и вопрос. Зачем указывать относительное смещение в готовом elf, раз самого эльфа нет?

Yoti 20.03.2011 14:27

Frostegater,
он есть, только в оперативной памяти.

ErikPshat 20.03.2011 15:54

Эмм, относительное смещение вроде имеет размер + 0х8000, если прога работает в user-режиме, выделяемое для него стартовый область памяти.

frostegater 20.03.2011 16:06

ErikPshat, у меня смещение 0x34... Да и в RAM я ничего не нашел =(

Yoti 20.03.2011 17:02

ErikPshat,
в данном случае это не то. Совсем =)

Забейте уже, в логе текстом написано где и что не так.

frostegater 22.03.2011 14:55

Yoti, тут такой попутный вопрос. Не знаешь ли как впихать дополнительный prx в eboot? И даже если я впихаю и подпишу будет ли работать? Я склоняюсь к тому, что нет, ведь это kernel? Верно?

Yoti 24.03.2011 00:43

Знаю. Если подпишешь eboot update ключами - будет работать загрузка левых prx.

frostegater 24.03.2011 01:40

Yoti, Это получается fake_np v9 писать? Ведь это он ключи тащит из Эбутов...

Yoti 24.03.2011 19:36

Frostegater,
вполне хватает fakesign'а.

frostegater 25.03.2011 03:23

Yoti, fakesign`а? А это что такое? :D Это ты предлагаешь ручками вытянуть ключи, вставить в Encrypter, скомпилить и подписать?

Yoti 25.03.2011 21:37

Frostegater,
я предлагаю поступить так, как это успешно делали ранее. Хочешь придумать что-то новое - дерзай, но я за результат не в ответе.

frostegater 01.04.2011 13:52

Yoti, ммм... нашол в чём проблема была с часами... Проблема в том, что я нужные либы не подгрузил :D... Не подскажешь какие нужны для этого либы? Или наведи хоть, я ведь знаю, что ты знаешь ;)

Yoti 03.04.2011 01:06

Фиг знает. Ищи в доках от sdk.

frostegater 03.04.2011 07:12

Yoti, ура!.. получилось.. прикрутил "-lpsprtc" либсю в мэйкфайле и всё заработало! Спасибо тебе огромное :)

Если кому нить надо, то вот исправленый мэйкфайл:
MakeFile

Код:

TARGET = DisplayTime
OBJS = main.o

INCDIR =
CFLAGS = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)
LIBS = -lpsppower -lpsputility -lpsprtc

LDFLAGS =

EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = DisplayTime

PSP_FW_VERSION = 500
BUILD_PRX = 1

PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak



Frostegater добавил 03.04.2011 в 07:12
Я закрываю тему :)


Текущее время: 08:49. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc. Перевод: zCarot
PSPx Forum - Сообщество фанатов игровых консолей.