C++/C++11 C++/C++11
собирал программы вручную проблем небыло только долго.
вот решил воспользоваться make и столкнулся с такой проблемой.
пример:
//main.cpp
#include "show.h"
int main()
{
ShowMe("tundra");
return 0;
}
// show.h
#ifndef _SWID_
#define _SWID_
void ShowMe( const char *s );
#endif
// show.cpp
#include <cstdio>
void ShowMe( const char *s )
{
std::printf("%s\n", s );
}
// Makefile
tundra: main.o show.o
g++ -o tundra main.o show.o
main.o: main.cpp show.h
g++ -c main.cpp
show.o: show.cpp
g++ -c show.cpp
собирает всё без ошибок а когда запускаешь программу выдает
такую ошибку:
error: only position independent executables (PIE) are supported.
что это бы могло значить?
(вручную собирает без ошибок компилятор GCC 7.2.0 )
вот решил воспользоваться make и столкнулся с такой проблемой.
пример:
//main.cpp
#include "show.h"
int main()
{
ShowMe("tundra");
return 0;
}
// show.h
#ifndef _SWID_
#define _SWID_
void ShowMe( const char *s );
#endif
// show.cpp
#include <cstdio>
void ShowMe( const char *s )
{
std::printf("%s\n", s );
}
// Makefile
tundra: main.o show.o
g++ -o tundra main.o show.o
main.o: main.cpp show.h
g++ -c main.cpp
show.o: show.cpp
g++ -c show.cpp
собирает всё без ошибок а когда запускаешь программу выдает
такую ошибку:
error: only position independent executables (PIE) are supported.
что это бы могло значить?
(вручную собирает без ошибок компилятор GCC 7.2.0 )
0 0 1
Комментарии (4)
да это я пишу на планшете на андроид 5.
вопрос заключался в следующем:
1) что означает ошибка - error: only position independent executables (PIE) are supported.
2) правильно ли у меня написан Makefile на предоставленые файлы ( используется компилятор GCC 7.2)
сделал как вы посоветовали вот типа такой Makefile:
CC = g++
CPPFLAGS = -Wall -g -fPIE
LDFLAGS = -fPIE -pie
tundra: main.o show.o
$(CC) $(LDFLAGS) -o tundra main.o show.o
main.o: main.cpp show.h
$(CC) $(CCPFLAGS) -c main.cpp
show.o: show.cpp
$(CC) $(CCPFLAGS) -c show.cpp
компилируется но при запуске таже ошибка.
нашёл на одном сайте ответ:
The steps are:
1-Copy it to a folder that the OS allows running an executable from within.
... The folder I used is /data/local /tmp
... I don't think you can put anything there without root !
2-Change the mode of the file to 755 to allow everyone to run it.
3-Use adb or Terminal Emulator to run it.
... If you are comfortable with adb commands then you don't need Terminal Emulator
перевод без рут прав можно сосать лапу.
просто и понятно
вопрос заключался в следующем:
1) что означает ошибка - error: only position independent executables (PIE) are supported.
2) правильно ли у меня написан Makefile на предоставленые файлы ( используется компилятор GCC 7.2)
сделал как вы посоветовали вот типа такой Makefile:
CC = g++
CPPFLAGS = -Wall -g -fPIE
LDFLAGS = -fPIE -pie
tundra: main.o show.o
$(CC) $(LDFLAGS) -o tundra main.o show.o
main.o: main.cpp show.h
$(CC) $(CCPFLAGS) -c main.cpp
show.o: show.cpp
$(CC) $(CCPFLAGS) -c show.cpp
компилируется но при запуске таже ошибка.
нашёл на одном сайте ответ:
The steps are:
1-Copy it to a folder that the OS allows running an executable from within.
... The folder I used is /data/local /tmp
... I don't think you can put anything there without root !
2-Change the mode of the file to 755 to allow everyone to run it.
3-Use adb or Terminal Emulator to run it.
... If you are comfortable with adb commands then you don't need Terminal Emulator
перевод без рут прав можно сосать лапу.
просто и понятно
Для добавления комментариев необходимо авторизоваться
Удивительный колхоз
Удивительный колхоз - это новая многопользовательс