LNK 4099 에러관련

2008.06.25 11:58 from WinCE

CE타겟을 빌드시 다음 에러가 발생하는 경우가 있다.

Warning 1 warning LNK4099: PDB 'libbmtd.pdb' was not found with 'C:\Program Files\Microsoft Visual Studio 8\VC\ce\lib\ARMV4I\LIBCMTD.lib' or at 'c:\Local Development\Visual C# 2005 Projects\StatusMWS\SCCECamera\Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\Debug\libbmtd.pdb'; linking object as if no debug info LIBCMTD.lib

Warning 2 warning LNK4099: PDB 'libbmtd.pdb' was not found with 'C:\Program Files\Microsoft Visual Studio 8\VC\ce\lib\ARMV4I\LIBCMTD.lib' or at 'c:\Local Development\Visual C# 2005 Projects\StatusMWS\SCCECamera\Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\Debug\libbmtd.pdb'; linking object as if no debug info LIBCMTD.lib

이 에러는 링크 옵션 ignore으로 제거되지 않는다.

아래의 내용을 확인해보면 Unignorable Warnings중 하나 이기 때문이다.



This option directs LINK to ignore the specified warnings.



At least one argument is required. All arguments must be numbers between 4000 and 4999 inclusive. It is a fatal error (LNK1147) if any argument does not evaluate satisfactorily.

The /ignore option is for the command line only. It is not valid as a directive in an object file.


In general, each of the specified warnings gets registered to be ignored. This means that should it occur, for whatever reason in whatever circumstances subsequent to the processing of this option, there will be no warning message and neither will its occurrence be treated as an error if the /wx option is active.

Unignorable Warnings

Some warning numbers are apparently too important to ignore:

%S statement not supported for the target platform

converting object format from OMF to COFF

unrecognized option '/%S'; ignored

'%S' not compatible with '%S' target machine; option ignored

ignoring '/%S' due to '/%S' specification

entrypoint '%S' is not __stdcall with 12 bytes of arguments; image may not run

image being generated due to /FORCE option; image may not run

PDB '%S' was not found with '%S' or at '%S'; linking object as if no debug info

no argument specified with option '/%S'; ignoring option

%S is no longer supported; ignored

'/%S' invalid for a DLL; ignored

invalid directive '/%S' encountered; ignored

To specify any of these in a /ignore option is not an error and brings no complaint. The specification is just not acted on. Should the specified warning ever occur, a warning message will still be displayed, and if the /wx option is active, the warning will still be promoted to an error.

Coding Error

As an aside, whichever of Microsoft’s programmers is currently in charge of LINK.EXE may care to note a small, presently inconsequential, coding error in the function that registers a warning number to be ignored. The unignorable warning numbers are defined as an array, with 12 members. In the loop that checks whether a warning number is in this array (and therefore not to be registered), the loop index presently runs to 48, i.e., to the sizeof the relevant array rather than to the number of elements in that array.

Not Quite Unignorable Warnings

For some warning numbers, specification in a /ignore option is accepted but not necessarily acted upon. Should the warning occur while the /wx option is not active, then the warning message is still displayed, but if the /wx option is active, then the warning is ignored. It is as if the warning is thought important enough to override an attempt at ignoring it, but not if the user has put too high a price on unignored warnings.

The following warning numbers are affected:

4200, 4203, 4204, 4205, 4206, 4207, 4208, 4209, 4219, 4231 and 4237

but note that 4208 can also occur in circumstances such that it is ignored independently of /wx.

Implicitly Ignored Warnings

There is presently one case of a warning being set to be ignored without the corresponding /ignore option being given explicitly. A side-effect of /subsystem:xbox is that warning 4078 gets registered internally as an ignored warning.


For who knows what reason, this obviously convenient switch is apparently undocumented. A corresponding switch for the compiler, /wd, has long been documented, as has a pragma for use in source code.

Though the /ignore switch may be undocumented, Microsoft has used it in the master makefiles for DDKs as far back as for NT 4.0. The warnings that Microsoft has found it necessary, or at least convenient, to disable in at least some cases when building device drivers over several DDK versions are:

no object files specified; libraries used

invalid version number %S; default version assumed

'%S' does not exist; ignored

section '%S' specified with /SECTION option does not exist

unrecognized option '/%S'; ignored

'%S' cannot be ordered; ignored

/OUT:%S directive in .EXP differs from output filename '%S'; ignoring directive

multiple '%S' sections found with different attributes (%08X)

CONSTANT keyword is obsolete; use DATA

image being generated due to /FORCE option; image may not run

all references to '%S' discarded by /OPT:REF

/BASE value '0x%X' is invalid for Windows 95 and Windows 98; image may not run

/ALIGN specified without /DRIVER or /VXD; image may not run

base key '%S' not found - using default

non-native module found; restarting link with /LTCG

no public symbols found; archive member will be inaccessible

/LTCG specified but no code generation required; remove /LTCG from the link command line to improve linker performance

물론 위와 같은 에러의 경우에는 아래 URL에서 설명된 것 처럼 Code generation의 Buffer Security Check를 끄면 Warring이 사라지지만 Buffer overflow 체크 기능도 같이 사라진다.


Posted by NOP 트랙백 0 : 댓글 0

이번에 Apple에서 iPhone SDK Beta 3를 공개했다. 릴리즈 노트를 확인하면 대부분 버그 픽스가 많은데 가장 놀라운 점은 시뮬레이터 상에서 한글 입력이 된다는 점이다. 모양은 이쁘지 않지만 공식적으로 Apple에서 한글 지원한다는데 의미가 있을 것 같다.


Posted by NOP 트랙백 0 : 댓글 0

어제(4월 3일) PwnageTool이 배포 되었다.

이미 미리 공개된 동영상을 통해 확인되었지만 사용방법은 간단하다. ipsw파일만 재생성 후에 iTure으로 복구시키기만 하면 된다. 현재 2.0 Beta Firmware까지 적용이 가능하다. 현재 2.0 Beta로 업로딩 한다고 하더라도 Installer.app 아이콘은 볼 수 없다. 아직 2.0 버전은 지원하지 않기 때문이다. 이 외에도 기타 프로그램은 호환이 안되며 최소한 재컴파일 후에 가능하리라고 생각된다.

다행히 PwnageTool로 재생성된 Firmware에는 OpenSSH는 설치되어 루트로의 접근은 가능하다. 하지만 아쉽게도 XCode를 통해 단말로의 접근은 불가능하다. 코드 사이닝 문제로 생각되며 이 부분은 더 확인을 해봐야 할 것 같다.


PwnageTool 사용방법은 다음과 같다.
PwnageTool OSX Usage Guide PWN It
PwnageTool OSX Firmware 2.0 Beta Guide Create IPSW

Posted by NOP 트랙백 0 : 댓글 0

iPhone DevTeam 해체?

2008.04.01 10:19 from iPhone

iPhone DevTeam은 새로운 펌웨어 크랙 방식으로 Pwange tool을 소개했었고 3월 말 발표하기로 약속했다. 진행 사항이 궁금하여 사이트를 방문한 결과 아래와 같은 내용을 확인할 수 있었다.

간단한 요약하면 이 바닥에서 물러나고 그간 개발했던 관련툴과 공개하기로 약속했던 Pwnage Tool 역시 외부 공개를 하지 않겠다는 내용이다. 현재 IRC체널에서는 이와 관련된 질문을 거부하고 있다.

ZiPhone 개발자도 2.0출시 전까지 해당툴을 공개하지 않기로 한 것을 보면 어떤 외압이나 딜이 있지 않았을까?
만우절 농담이길...다. =ㅁ=

현재 재확인 결과 다음과 같은 그림으로 변경됐다. 낚였다;;

사용자 삽입 이미지

Posted by NOP 트랙백 0 : 댓글 1

사용자 삽입 이미지

iPhone SDK가 새로 릴리즈 됐다. 인터페이스 빌더가 추가된 것이 주 변경사항이며 아직은 베타 수준이라 완벽하지는 않은 것 같다. 빌드 타겟의 버전도 1.2에서 2.0으로 변경되었고 시뮬레이터도 Aspen Simulrator에서 iPhone Simulrator로 변경되었다.

Interface Builder 3.1 Beta 2 Release Notes


Beta 1 to Beta 2 API Delta


Posted by NOP 트랙백 0 : 댓글 0

Gartner analyst Ken Dulaney claims to have heard "from sources in Asia" that Apple has placed a 10 million unit order for 3G iPhones, according to an interview by the iPod Observer. This order for 10 million 3G iPhones would reportedly be above and beyond the original 10 million Apple had planned to sell of the initial version of the iPhone in 2008.

macrumor.com에 따르면 Apple은 이미 3G iPhone을 천만대나 주문받았다고 한다. 국내에서 iPhone을 사용할 수 있는 가능성이 조금 더 높아지는건가...

TAG 3G, iphone
Posted by NOP 트랙백 0 : 댓글 0
SDK가 Beta인 상태로 공개되었지만 사실상 일반개발자는 시뮬레이터에만 의존할 수밖에 없었다. 빌드 가능한 버전이 1.2.0으로 빌드되어 1.2.0 이하버전에서는 실행조차 되지 않으며 1.2.0 Beta Firmware는 일부 Apple이 지정한 회사만이 입수할 수 있었기 때문이다. iPhone Developers Program 역시 돈내고 가입할려고 해도 대부분 거부되었다는 메일만 받은 상태였다. 그리고 물론 1.2.0 Firmware가 Jailbreak, Unlock, Activate가 되었다는 소식도 들리는데 말이다.

Erica Sadun에 따르면 Apple이 iPhone Developers Program에 대한 수락을 시작한 것 같다고 한다. 그것도 모두가 아니라 랜덤함 순서로..=ㅁ=;

사용자 삽입 이미지

일부 수락된 개발자의 블로그를 보면 1.2.0 beta Firmware가 다운로드 가능했다고 한다.
사용자 삽입 이미지
Posted by NOP 트랙백 0 : 댓글 1

Maemo SDK 4.0 설치방법

2008.03.18 14:43 from Etc

Ubuntu 기준으로 작성됨.

Scratchbox 설치

다음 경로에서 maemo-scratchbox-install_4.0.1.sh(버전은 달라질 수 있음)를 다운로드


$ wget http://repository.maemo.org/stable/chinook/maemo-scratchbox-install_4.0.1.sh

$ sudo chmod a+x ./maemo-scratchbox-install_4.0.1.sh

$ sudo ./maemo-scratchbox-install_4.0.1.sh

설치후 다음과 같은 화면이 출력됨.

Installation was successful!


You now have Scratchbox 1.0.8 'apophis' release installed.

Scratchbox cannot be run as user root. Instead, use your normal login

user account. Add additional scratchbox users and sandboxes with the

following command (outside scratchbox with root permissions):

        # /scratchbox/sbin/sbox_adduser USER yes

Running this command will create sandbox environment for that user and

add user to the 'sbox' scratchbox user group.

You will need to start a new login terminal after being added to the

'sbox' group for group membership to be effective.

Login to scratchbox session using the following command (as user):

        $ /scratchbox/login

Refer to scratchbox.org documentation for more information re scratchbox:


scratchbox 접근권한 추가

$ sudo /scratchbox/sbin/sbox_adduser [user_id] yes

Maemo SDK 설치

설치 스크립트 다운로드 및 실행

$ wget http://repository.maemo.org/stable/chinook/maemo-sdk-install_4.0.1.sh

$ chmod +x maemo-sdk-install_4.0.1.sh

$ ./maemo-sdk-install_4.0.1.sh

실행시 설치옵션은 필요에 의해서 선택함.

xserver-xephyr 설치 후 실행

실행시 빈 화면만 나타나게 됨.

$ sudo apt-get install xserver-xephyr
$  Xephyr :2 -host-cursor -screen 800x480x16 -dpi 96 -ac -extension Composite

scratchbox 실행

$ /scratchbox/login

[sbox-CHINOOK_ARMEL: ~] > fakeroot apt-get install maemo-explicit

[sbox-CHINOOK_ARMEL: ~] > export DISPLAY=:2

[sbox-CHINOOK_ARMEL: ~] > af-sb-init.sh start

HelloWorld 빌드

maemo_hello.c 파일 생성

#include <hildon/hildon-program.h>
#include <gtk/gtkmain.h>
#include <gtk/gtkbutton.h>

int main(int argc, char *argv[])
    /* Create needed variables */
    HildonProgram *program;
    HildonWindow *window;
    GtkWidget *button;

    /* Initialize the GTK. */
    gtk_init(&argc, &argv);

    /* Create the hildon program and setup the title */
    program = HILDON_PROGRAM(hildon_program_get_instance());
    g_set_application_name("Hello maemo!");

    /* Create HildonWindow and set it to HildonProgram */
    window = HILDON_WINDOW(hildon_window_new());
    hildon_program_add_window(program, window);

    /* Create button and add it to main view */
    button = gtk_button_new_with_label("Hello!");
    gtk_container_add(GTK_CONTAINER(window), button);

    /* Connect signal to X in the upper corner */
    g_signal_connect(G_OBJECT(window), "delete_event",
      G_CALLBACK(gtk_main_quit), NULL);

    /* Begin the main application */

    /* Exit */
    return 0;

scratchbox에서 빌드후 실행

[sbox-CHINOOK_ARMEL: ~] > gcc -o maemo_hello maemo_hello.c `pkg-config --cflags gtk+-2.0 hildon-1` -ansi -Wall `pkg-config --libs gtk+-2.0 hildon-1`

[sbox-CHINOOK_ARMEL: ~] > run-standalone.sh ./maemo_hello

사용자 삽입 이미지


[1] http://repository.maemo.org/stable/chinook/INSTALL.txt

[2] http://www.progbox.co.uk/wordpress/?p=453

Posted by NOP 트랙백 0 : 댓글 0

iPhone/iPod Firmware

2008.03.12 18:00 from iPhone


1.1.0 3A101a


1.1.1 3A110a


1.1.2 3B48b


1.1.3 4A93


1.1.4 4A102



1.0.1 1C25


1.0.2 1C28


1.1.1 3A109a


1.1.2 3B48b


1.1.3 4A93


1.1.4 4A102


Posted by NOP 트랙백 0 : 댓글 0

openssl passwd -crypt -salt /s [페스워드]

출력결과로 /etc/master.passwd 파일을 페스워드 필드를 수정

Posted by NOP 트랙백 0 : 댓글 0