Showing posts with label mac. Show all posts
Showing posts with label mac. Show all posts

Sunday, 12 July 2009

放弃在Mac 10.5.7 上安装GNUstep 0.23

经过大半个星期的下班时间调试,尝试在Mac osx 10.5.7 (darwin 9.7)上安装GNUstep 0.23,最终没有成功,还把Mac弄残一次,我猜可能是由于compiling的时候出现的segmentation fault致使Kernel Panic。


总结失败教训如下:
  1. make的时候,常常是需要 $LDFLAG 比用到 $DYLD_LIBRARY_PATH 的时候多。后者貌似更像是运行程序的时候使用,而不是configure和make时候用。
  2. Mac作为操作系统,其界面无可争议,但是底层系统方面,我个人觉得还不如Linux。在最近的console下编译程序的时候,出现两次致使Mac不断重启的情况,而解决方法都是不得不重装系统后,第二次更离谱,连cmd+s的single user mode都无法进入。Mac啊,现在给我的感觉是典型的外强中干。
  3. GNUstep需要有gnu的objc runtime,如果用默认的设置,必然使得其调用mac自带的gcc和objc的库,这样肯定会带来些兼容性的问题。 我猜我弄出的两次mac无法开机不断重启,与此两种不兼容并冲突的objc有关系。因为GNUstep在ubuntu 9.04和fedora 11下编译运行的很好。如果想在Mac上安装,我觉得还得是要等macports提供,macports跟进的还算不错,对gnustep,和官方新版本放出的时间也就差2个星期左右。可是,macports下的objc目前还不能安装,等到这个出现后,可以再试编译gnustep源文件。

以下是我用到的env设置:
#export LDFLAGS='-L/usr/local/lib -L/usr/lib -L/opt/local/lib -L/sw/lib'
export LDFLAGS='-L/opt/local/lib -L/sw/lib -L/usr/GNUstep/Local/Library/Libraries'
#export DYLD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/opt/local/lib:/sw/lib

export CPPFLAGS='-I/opt/local/include -I/sw/include'
#export CFLAGS='-I/usr/local/include -I/usr/include -I/opt/local/include -I/sw/include'

export PATH=/opt/local/bin:/opt/local/sbin:/sw/bin:/sw/sb:/usr/bin:/bin:/usr/sbin:/sbin

#. /usr/GNUstep/System/Library/Makefiles/GNUstep.sh

注:个人认为,在编译gnu的程序时,最好避免用到mac自带的一些命令。而且,最好在编译之前,把/usr/bin/gcc改成是 /opt/local/bin/gcc-mp-4.2这样的,以防止避免gnu和mac的程序冲突。

Tuesday, 7 July 2009

HOWTO: compile source code on MAC OS X

Conditions:

======================
Macport (recommended, can be found on apple.com, updated and organized well) and Fink are installed in default locations, /opt/local and /sw.

Note: Fink is buggy, normally reinstallation on the previous version will not work, issues like path setup maybe occur, either bin files or libraries are not accessible.

To compile:
======================
  1. For library invoking:
    export LDFLAGS='-L/usr/local/lib -L/usr/lib -L/opt/local/lib -L/sw/lib'
    - '-L/dir' is the convention to setup gcc switch, while -L for make is --check-symlink-times, useless for me :)
    - Official way for invoking library is to setup $DYLD_LIBRARY_PATH (export DYLD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/opt/local/lib:/sw/lib), which in Linux is $LD_LIBRARY_PATH by default.
    - Normally lib path don't need specified, because the bin files (in /usr/bin or /opt/local/bin' will know where to get appropriate libraries, no matter bin files from Macports or Fink.

  2. For header files invoking:
    export CPPFLAGS='-I/usr/local/include -I/usr/include -I/opt/local/include -I/sw/include'
    - This is the way to setup both 'make' and 'gcc' switch, which is 'make -I/usr/local/include'.

Example:
=====================
The following are what I typed in terminal with user root to compile GNUstep-0.22.

export CPPFLAGS='-I/usr/local/include -I/opt/local/include'
export LDFLAGS='-L/usr/local/lib -L/usr/lib -L/opt/local/lib -L/sw/lib'
export DYLD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/opt/local/lib:/sw/lib:/usr/GNUstep/Local/Library/Libraries
. /usr/GNUstep/System/Library/Makefiles/GNUstep.sh

Sunday, 5 July 2009

MAC OS X: change the environment PATH

To add a new directory to the path, simply add it to the existing PATH line in .profile being careful to separate it from other directories there with colons and careful not to introduce unwanted spaces (everything after the space will be ignored). For example, to add the directory /mightyq/bin to the PATH shown above, the line could become any of the following examples:

export PATH=/mightyq/bin:/opt/local/bin:/opt/local/sbin:$PATH
export PATH=/opt/local/bin:/mightyq/bin:/opt/local/sbin:$PATH
export PATH=/opt/local/bin:/opt/local/sbin:$PATH:/mightyq/bin

Note that in the third example the new directory is added to the end of the PATH. You have the ability to optimize the searches your shell will do on your behalf each time you run a command by organizing your PATH logically. Putting less frequently used or really massive directories later in the path may give you a little performance boost (although these days things are pretty fast, so you have to be a little anal to really enjoy this).

If you don’t need a directory in your path, you can reverse the process by deleting the unwanted directory still taking care to preserve the no spaces, colon separation rules.

One last note, to test the change you made, you can use the echo command, but you need to make the shell reload the .profile first. Assuming you are in your home directory (if not, running ‘cd’ without any options will take you there), run these commands:

. ./.profile
echo $PATH

The first . is a shortcut to cause the shell to ’source’ or load the contents of the subsequent file as itself, in the manner that the shell uses when you login to a system or start a Terminal window. If you simply executed these commands like a shell script (bash .profile, for example) you would start a new shell, that shell would get the variable set, and at the end of running the .profile script, that new shell would cease to exist and the newly defined variables would be relegated to the missing sock universe.While . makes the variables generated from new shell ( child shell ) return to the current shell (parent shell).

Saturday, 4 July 2009

The missing part in Gorm Manual on GNUstep, about 'NewClass' controller

8 Creating an Application
If you have ProjectCenter, you need to open it and create an “Application” project.
Create it with the name “FirstApp”. From there you can open the MainMenu.gorm by
clicking on interfaces and selecting MainMenu.gorm. If Gorm.app is properly installed, you
Gorm should start up.
If you don’t have ProjectCenter, you can create the Gorm file by hand. First you need
to start Gorm. You can either do this by doing ‘gopen Gorm.app’ from a command line
prompt, or you can invoke it from the Dock or from the workspace’s file viewer.
You then need to select the ‘Document’ menu, and then ‘New Application’. This should
produce a new document window, with a menu and an empty window. This should be
the same as with the ProjectCenter gorm file since this is the basic starting point for an
application.
For the sections below... only do one or the other, not both.
8.1 Creating A Class In Gorm
There are two ways to do this next operation. I will take you through each step by step.
First click on the classes icon in the toolbar on the top of the Gorm document window.
You should see the view below change to an outline view containing a list of class names.
Once this happens we’re ready to create a class. Select the class you wish to subclass in
the outline view. For our example we will use the simplest: NSObject. Select it by clicking
on the class name once. Then go to the Classes menu in the main menu and select Create
Subclass (you can also type Alt-Shift-c, which will do this as well. The new class will be
created in the list with the name “NewClass”.
8.2 Using The Outline View
From here double click on the subclass name to make it editable. Type the name of the
class and hit enter. For our example, please use the class name MyController. When you
hit enter an alert panel will appear and warn you about breaking connections, simply select
OK and continue.
This method of inputting the classes was inspired by IB in OPENSTEP 4.2/Mach which
had functionality very similar to this. For users of that the transition to Gorm will be
seamless.
8.2.1 Adding Outlets In The Outline View
Too add an outlet, select the round icon with the two horizontal lines in it (it sort of looks
like a wall outlet. This should become depressed. Here you need to go to the Gorm Menu,
under Classes select “Add Outlet/Action”. Each time you press this menu item another
outlet will be added with a name similar to newOutlet, as you add more the number at the
end will increase. For now add only one outlet.
To rename the outlet simply double click it and change it’s name like you did the class
above to “value” for the sake of our example.
Chapter 8: Creating an Application 20
8.2.2 Adding Actions In the Outline View
The procedure to add on action is precisely the same as adding an outlet, except you
must click on the button which looks like a target (a circle with a + inside). Add an action
and name it “buttonPressed:” for the sake of our example.
8.3 Using The Class Edit Inspector
This way is much more inline with the “OPENSTEP/GNUstep” philosophy. For each
object there is an inspector, even for Class objects.
Once you have created the class as described in the previous section “Creating a Class
In Gorm”, you must skip to this section to use the inspector. In the Gorm main menu
select Tools and then select “Inspectors”. This will make certain that the inspectors win-
dow is being displayed. Once the inspectors window is up move the pulldown on the top
to “Attributes” and select the class you created which should, at this point, have the name
“NewClass”. You’ll notice that the “Class” field at the top which shows the name’s back-
ground color has turned white, instead of grey. This indicates that this class name is
editable. Erase “NewClass” from the text field and type “MyController”.
8.3.1 Adding Outlets In The Inspector
Adding outlets is very intuitive in the inspector. Simply select the “Outlets” tab in the
tab view and click “Add” to add more outlets, and “Remove” to remove them. For the sake
of our example, add one outlet and name it “value”.
8.3.2 Adding Actions In the Inspector
Very much like above only with the “Actions” tab, add an action called button pressed.
8.4 Instantiating The Class
In the Classes outline view select the new class you’ve created, now called MyController
and then go to the Gorm menu and select Classes, and then Instantiate. The document
window should shift from the classes view to the objects view. Amoung the set of objects
should be a new object called MyController.
8.5 Adding Controls from the Palette
Go to the Gorm menu and select Tools, then Palettes. This will bring the palette window
to the front. The second palette from the left is the “ControlsPalette”. Select that one and
find the button object (it should have the word “Button” in it). Drag that to the window
and drop it anywhere you like.
Repeat this operation with the text field. It’s the control with “Text” in it. We are now
ready to start making connections between different objects in the document.
Chapter 8: Creating an Application 21
8.5.1 Making Connections
The type of application we are creating is known as a “NSApplication delegate” this
means that the MyController object will be set as the delegate of NSApplication.
To make this connection click on NSOwner and hold down the Control button, keep it
pressed as you drag from the NSOwner object to the MyController object. The inspectors
window should change to the Connections inspector and should show two outlets “delegate”
and “menu”. Select the “delegate”, at this point you should see a green S and a purple T
on the NSOwner and MyController objects respectively, and press the “Connect” button
in the inspector. In the “Connections” section of the inspector you should see an entry
which looks similar to “delegate (MyController)” this indicates that the connection has
been made.
Now we need to make connections from the controller to the textfield and from the
controller to the button. Select the MyController object and Control-Drag (as before)
from the object to the text field, this will make an outlet connection. You should see the
connections inspector again, this time select the “value” outlet and hit Connect.
Next, control-drag from the button to the controller, this will make an action connec-
tion. The connections inspector should again appear. This time you need to select the
“target” outlet, to get the list of actions. The list should have only one entry, which is
“buttonPressed:” since this is the one we added earlier. Press Connect. You should see an
entry like “buttonPressed: (MyController” in the Connections section of the inspector.
It is also possible to make this connection to NSFirst, but to keep things simple, make
it directly to the object. If you make the connection to buttonPressed: on NSFirst the
functionality of the application will be unchanged, but the invocation will take the path
described above in the section which describes “The Responder Chain”.
8.6 Saving the gorm file
At this point you must save the .gorm file. Go to the Gorm menu and click Documents
and then select “Save”. If the document was opened from a pre-existing .gorm, it will save
to that same file name. If it is an UNTITLED .gorm file a file dialog will appear and you
will need to select the directory where you want to store the .gorm file and type the name
of the .gorm file.
8.7 Generating .h and .m files from the class.
This is different than saving, some people have gotten this confused with the idea of
Gorm generating the code for the gui. Gorm does nothing of the sort (grin).
Go to the Classes section in the Document window and select the MyController class yet
again. Now go to the Gorm menu and select Classes and the select “Create Class Files”.
This will bring up a file panel and it allow you to select the directory in which to put the
files. It will first create the MyController.m file and then the MyController.h file. Simply
select the directory in which your app will reside and hit okay for both. You can change
the names, but the default ones, which are based on the class name, should be sufficient.

When you look at the .m for this class, you should see the ‘buttonPressed:’ method with
the commecnt ‘/* insert your code here */’ in it. Delete this comment and add ‘[value
setStringValue: @‘‘Hello’’];’. The class should look like this after you’re done:
/* All Rights reserved */
#include
#include "MyController.h"
@implementation MyController
- (void) buttonPressed: (id)sender
{
[value setStringValue: @”Hello”];
}
@end
You recall, we connected the textfield to the “value” variable. The call above causes the
method setStringValue to be invoked on the textfield you added to the window.
Also, note that the name of the method is “buttonPressed:”. This is the action which is
bound to the button. When it is pressed the text in the textfield should change to “Hello”.
You now need to build the application either by copying in a GNUmakefile and making
the appropriate changes or by using ProjectCenter’s build capability, depending on if you
use it or not.
This app is available as “SimpleApp” in the Examples directory under the Documen-
tation directory distributed with Gorm. Hopefully this has helped to demonstrate, albeit
on a small scale, the capabilities of Gorm. In later chapters we will cover more advanced
application architectures and topics.

Saturday, 16 May 2009

HOWTO: [MAC] Move User to a different partition

Move User to a different partition

As we have hopefully set up a separate partition for our private data, here’s the bash-way of moving a home. (based on this article)

  1. in 'Disk Utility' to setup a new partition with 'Mac OS Extended (Journaled)' format, I call it 'home'.
  2. copy the whole home to your new partition:

    # sudo su -
    # cp -Rp /Users/username /Volumes/username
  3. Now we use Directory Services which can be accessed by dscl (Directory Services Command Line):

    # sudo su -
    # dscl localhost
    > cd /Local/Default/Users
    > change username dsAttrTypeNative:home /Users/username /Volumes/home/username> exit

Reboot, verify if your user data is at the new spot and then delete it from the old spot (/Users/username).

Monday, 20 April 2009

My MAC applications

Large files:
xcode developer
mactex
ilife
iwork
Photoshop cs4 trial
Dreamweaver cs4 trial

Plugins:
x11-2.3.2.1
NTFS-3g (http://www.ntfs-3g.org/)

Server:
pdt-all-in-one-macosx-carbon-2.0.0GA.tar.gz
MAMP_1.7.2
Joomla_1.5.10-Stable-Full_Package

Others:
Adobe reader
Adobe flash player
Adium_1.3.3
Calaboration_1.0.2 (iCal sync with Google Calendar)
Cyperduck
Evernote
ffmpegX (video converter, 3gp to mp4/avi etc.)
Fink
Firefox
ID3Mod2_V49
JavaForMacosx10.5
Lyx
Macports
MacVim
Messenger (Microsoft)
Openoffice
Picasamac
Realplayer
Speed download (buy)
Textmate (buy)
TheUnarchiver
VLC
Vuze
Xee

Sunday, 19 April 2009

MAC: X11 on Mac 10.5.6

The X11 download on apple.com is for Panther 'only'. So it will never be installed successfully. You will get the error prompt like "You cannot install X11 on this volume. A newer version of this software already exists on this volume."

Your best bet for staying current with bugfixes is to install the latest X11 package (at the moment X11 2.3.0) released by the Xquartz project, which contains Xquartz-1.4.2-apple5, and includes many fixes outside of Xquartz. Afterwards, just install the latest binary versions of Xquartz released periodically as fixes are being made. To see the complete list of changes in release X11-2.3.0, please go here.

After this installation, run the x11.app from /Application/Utilities/, then run terminal from the X11 Application menu. In this xterm based terminal you can run those x11 applications installed by macports or fink, also run those like gimp which need x11 environment.

For example:
1) run gedit
gedit
2) run gimp
open -a gimp or open /Applications/Gimp.app

Saturday, 18 April 2009

MAC: startup item

1. Accounts settings in System Preferences. There is a tab called "Login Items".

2. All the system's start up items (as opposed to login items) should be located in a folder named StartupItems in your hard drive's /Library.

Friday, 17 April 2009

Mac 10.5.6 on PC (ipc osx86 10.5.6 on Dell dimension 5150)

Spec:
========
Dell Dimension 5150:
DIMENSION 5150 PENTIUM D 805 DUAL CORE
AUDIO INTEGRATED HDA 7.1 DOLBY DIGITAL C
GRAPHICS CARD ATI RADEON X300 SE 128MB H
INTEL PRO/100 VE NETWORK CONNECTION (ETHERNET)


ISO:
========
IPC OSX86 10.5.6 PPF5 FINAL
Burn it using the lowest speed is important.
The supported hardware list: http://www.ihackintosh.com/2009/02/ipc-osx86-1056-final-ppf5-complete-driver-list/

Intallation options:
========
try not to select extra driver and patches, which can be installed easily after successful installation.

To remove kext cache in 10.5.6 or later just run:
sudo rm -rf /System/Library/Extensions.mkext

Kernel: 9.5 voodoo (the default kernel 9.6 will bring black screen; After upgrade to 10.5.7, the voodoo kernel need to be reinstalled)
ethernet driver: intel pro/100 ve (tips for your particular device: modifying Info.plist)
audio: the patch or driver coming with this iso doesn't work for my Dell Dimension 5150, the available driver is here.
video: typing '-x "Graphics Mode"="1280x1024x32@85" as boot flag to change the screen resolution. More details are here.
Alternatively, using ATI 9700 driver as the driver for x300, this will remove small square around mouse, but still no QE support in Leopard. + ATI Radeon x300 PCI-Ex Callisto v.008 to change the screen resolution.

patch:
seatbelt (to solve mounting dmg file kernel panic issue)
shutdown (seems not work properly)
"NTFS-3g (http://www.ntfs-3g.org/)" can be installed later as a software

Sleep problem: (I did both together, so far don't know which fixed this problem. This happened when I upgrade to 10.5.7)
1) try to remove useless ATI and Gefore kext from /System/Library/Extensions.
2) GMA driver ( I removed the ATI VGA card, because it doesn't support Quartz Extreme. )

Softwares:
Here

Monday, 13 April 2009

dual boot configuration within XP

When Linux or Mac os86 installed on the disk, where Windows has been installed before, some time it's not set dual boot by defalt. This is the fix, only using the funtion coming along with xp.

Fix:
====================
in Dos, type:
diskpart
list disk
select disk 0
list part
select part 3 // could be different depending on your partitions
active
exit
======================

My photo
London, United Kingdom
twitter.com/zhengxin

Facebook & Twitter